Fixing 1px offset in tiles.
This commit is contained in:
parent
fa58eaa317
commit
2401bb7d03
|
@ -52,7 +52,6 @@ struct VertexData { \n\
|
||||||
const std::string vs_source = header +
|
const std::string vs_source = header +
|
||||||
"\n\
|
"\n\
|
||||||
layout(location = 0) uniform vec4 src_uv; \n\
|
layout(location = 0) uniform vec4 src_uv; \n\
|
||||||
layout(location = 1) uniform vec4 dest_rect; \n\
|
|
||||||
out gl_PerVertex { \n\
|
out gl_PerVertex { \n\
|
||||||
vec4 gl_Position; \n\
|
vec4 gl_Position; \n\
|
||||||
float gl_PointSize; \n\
|
float gl_PointSize; \n\
|
||||||
|
@ -229,7 +228,8 @@ void Blitter::Draw(GLuint src_texture, Rect2D src_rect, Rect2D dest_rect,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
glViewport(dest_rect.x, dest_rect.y, dest_rect.width, dest_rect.height);
|
glViewportIndexedf(0, GLfloat(dest_rect.x), GLfloat(dest_rect.y),
|
||||||
|
GLfloat(dest_rect.width), GLfloat(dest_rect.height));
|
||||||
|
|
||||||
// TODO(benvanik): avoid this?
|
// TODO(benvanik): avoid this?
|
||||||
GLint src_texture_width;
|
GLint src_texture_width;
|
||||||
|
@ -242,8 +242,6 @@ void Blitter::Draw(GLuint src_texture, Rect2D src_rect, Rect2D dest_rect,
|
||||||
src_rect.y / float(src_texture_height),
|
src_rect.y / float(src_texture_height),
|
||||||
src_rect.width / float(src_texture_width),
|
src_rect.width / float(src_texture_width),
|
||||||
src_rect.height / float(src_texture_height));
|
src_rect.height / float(src_texture_height));
|
||||||
glProgramUniform4f(vertex_program_, 1, float(dest_rect.x), float(dest_rect.y),
|
|
||||||
float(dest_rect.width), float(dest_rect.height));
|
|
||||||
|
|
||||||
// Useful for seeing the entire framebuffer/etc:
|
// Useful for seeing the entire framebuffer/etc:
|
||||||
// glProgramUniform4f(vertex_program_, 0, 0.0f, 0.0f, 1.0f, 1.0f);
|
// glProgramUniform4f(vertex_program_, 0, 0.0f, 0.0f, 1.0f, 1.0f);
|
||||||
|
|
|
@ -2669,22 +2669,22 @@ bool CommandProcessor::IssueCopy() {
|
||||||
assert_true(fetch->size == 6);
|
assert_true(fetch->size == 6);
|
||||||
const uint8_t* vertex_addr = membase_ + (fetch->address << 2);
|
const uint8_t* vertex_addr = membase_ + (fetch->address << 2);
|
||||||
trace_writer_.WriteMemoryRead(fetch->address << 2, fetch->size * 4);
|
trace_writer_.WriteMemoryRead(fetch->address << 2, fetch->size * 4);
|
||||||
int32_t dest_min_x = int32_t(std::ceilf(std::min(
|
int32_t dest_min_x = int32_t((std::min(
|
||||||
std::min(
|
std::min(
|
||||||
GpuSwap(poly::load<float>(vertex_addr + 0), Endian(fetch->endian)),
|
GpuSwap(poly::load<float>(vertex_addr + 0), Endian(fetch->endian)),
|
||||||
GpuSwap(poly::load<float>(vertex_addr + 8), Endian(fetch->endian))),
|
GpuSwap(poly::load<float>(vertex_addr + 8), Endian(fetch->endian))),
|
||||||
GpuSwap(poly::load<float>(vertex_addr + 16), Endian(fetch->endian)))));
|
GpuSwap(poly::load<float>(vertex_addr + 16), Endian(fetch->endian)))));
|
||||||
int32_t dest_max_x = int32_t(std::ceilf(std::max(
|
int32_t dest_max_x = int32_t((std::max(
|
||||||
std::max(
|
std::max(
|
||||||
GpuSwap(poly::load<float>(vertex_addr + 0), Endian(fetch->endian)),
|
GpuSwap(poly::load<float>(vertex_addr + 0), Endian(fetch->endian)),
|
||||||
GpuSwap(poly::load<float>(vertex_addr + 8), Endian(fetch->endian))),
|
GpuSwap(poly::load<float>(vertex_addr + 8), Endian(fetch->endian))),
|
||||||
GpuSwap(poly::load<float>(vertex_addr + 16), Endian(fetch->endian)))));
|
GpuSwap(poly::load<float>(vertex_addr + 16), Endian(fetch->endian)))));
|
||||||
int32_t dest_min_y = int32_t(std::ceilf(std::min(
|
int32_t dest_min_y = int32_t((std::min(
|
||||||
std::min(
|
std::min(
|
||||||
GpuSwap(poly::load<float>(vertex_addr + 4), Endian(fetch->endian)),
|
GpuSwap(poly::load<float>(vertex_addr + 4), Endian(fetch->endian)),
|
||||||
GpuSwap(poly::load<float>(vertex_addr + 12), Endian(fetch->endian))),
|
GpuSwap(poly::load<float>(vertex_addr + 12), Endian(fetch->endian))),
|
||||||
GpuSwap(poly::load<float>(vertex_addr + 20), Endian(fetch->endian)))));
|
GpuSwap(poly::load<float>(vertex_addr + 20), Endian(fetch->endian)))));
|
||||||
int32_t dest_max_y = int32_t(std::ceilf(std::max(
|
int32_t dest_max_y = int32_t((std::max(
|
||||||
std::max(
|
std::max(
|
||||||
GpuSwap(poly::load<float>(vertex_addr + 4), Endian(fetch->endian)),
|
GpuSwap(poly::load<float>(vertex_addr + 4), Endian(fetch->endian)),
|
||||||
GpuSwap(poly::load<float>(vertex_addr + 12), Endian(fetch->endian))),
|
GpuSwap(poly::load<float>(vertex_addr + 12), Endian(fetch->endian))),
|
||||||
|
|
|
@ -46,6 +46,7 @@ std::string GL4Shader::GetHeader() {
|
||||||
"#extension GL_ARB_shader_draw_parameters : require\n"
|
"#extension GL_ARB_shader_draw_parameters : require\n"
|
||||||
"#extension GL_ARB_shader_storage_buffer_object : require\n"
|
"#extension GL_ARB_shader_storage_buffer_object : require\n"
|
||||||
"#extension GL_ARB_shading_language_420pack : require\n"
|
"#extension GL_ARB_shading_language_420pack : require\n"
|
||||||
|
"#extension GL_ARB_fragment_coord_conventions : require\n"
|
||||||
"#define FLT_MAX 3.402823466e+38\n"
|
"#define FLT_MAX 3.402823466e+38\n"
|
||||||
"precision highp float;\n"
|
"precision highp float;\n"
|
||||||
"precision highp int;\n"
|
"precision highp int;\n"
|
||||||
|
@ -247,7 +248,7 @@ bool GL4Shader::PreparePixelShader(
|
||||||
|
|
||||||
std::string source =
|
std::string source =
|
||||||
GetHeader() +
|
GetHeader() +
|
||||||
"layout(origin_upper_left) in vec4 gl_FragCoord;\n"
|
"layout(origin_upper_left, pixel_center_integer) in vec4 gl_FragCoord;\n"
|
||||||
"layout(location = 0) flat in uint draw_id;\n"
|
"layout(location = 0) flat in uint draw_id;\n"
|
||||||
"layout(location = 1) in VertexData vtx;\n"
|
"layout(location = 1) in VertexData vtx;\n"
|
||||||
"layout(location = 0) out vec4 oC[4];\n"
|
"layout(location = 0) out vec4 oC[4];\n"
|
||||||
|
|
Loading…
Reference in New Issue