Browse Source
Merge pull request #3305 from ReinUsesLisp/point-size-program
gl_state: Implement PROGRAM_POINT_SIZE
pull/15/merge
bunnei
6 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with
13 additions and
2 deletions
-
src/video_core/engines/maxwell_3d.h
-
src/video_core/renderer_opengl/gl_rasterizer.cpp
-
src/video_core/renderer_opengl/gl_state.cpp
-
src/video_core/renderer_opengl/gl_state.h
|
|
|
@ -1018,7 +1018,14 @@ public: |
|
|
|
} |
|
|
|
} instanced_arrays; |
|
|
|
|
|
|
|
INSERT_UNION_PADDING_WORDS(0x6); |
|
|
|
INSERT_UNION_PADDING_WORDS(0x4); |
|
|
|
|
|
|
|
union { |
|
|
|
BitField<0, 1, u32> enable; |
|
|
|
BitField<4, 8, u32> unk4; |
|
|
|
} vp_point_size; |
|
|
|
|
|
|
|
INSERT_UNION_PADDING_WORDS(1); |
|
|
|
|
|
|
|
Cull cull; |
|
|
|
|
|
|
|
@ -1503,6 +1510,7 @@ ASSERT_REG_POSITION(primitive_restart, 0x591); |
|
|
|
ASSERT_REG_POSITION(index_array, 0x5F2); |
|
|
|
ASSERT_REG_POSITION(polygon_offset_clamp, 0x61F); |
|
|
|
ASSERT_REG_POSITION(instanced_arrays, 0x620); |
|
|
|
ASSERT_REG_POSITION(vp_point_size, 0x644); |
|
|
|
ASSERT_REG_POSITION(cull, 0x646); |
|
|
|
ASSERT_REG_POSITION(pixel_center_integer, 0x649); |
|
|
|
ASSERT_REG_POSITION(viewport_transform_enabled, 0x64B); |
|
|
|
|
|
|
|
@ -1272,6 +1272,7 @@ void RasterizerOpenGL::SyncPointState() { |
|
|
|
const auto& regs = system.GPU().Maxwell3D().regs; |
|
|
|
// Limit the point size to 1 since nouveau sometimes sets a point size of 0 (and that's invalid
|
|
|
|
// in OpenGL).
|
|
|
|
state.point.program_control = regs.vp_point_size.enable ? GL_TRUE : GL_FALSE; |
|
|
|
state.point.size = std::max(1.0f, regs.point_size); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -127,6 +127,7 @@ void OpenGLState::ApplyClipDistances() { |
|
|
|
} |
|
|
|
|
|
|
|
void OpenGLState::ApplyPointSize() { |
|
|
|
Enable(GL_PROGRAM_POINT_SIZE, cur_state.point.program_control, point.program_control); |
|
|
|
if (UpdateValue(cur_state.point.size, point.size)) { |
|
|
|
glPointSize(point.size); |
|
|
|
} |
|
|
|
|
|
|
|
@ -131,7 +131,8 @@ public: |
|
|
|
std::array<Viewport, Tegra::Engines::Maxwell3D::Regs::NumViewports> viewports; |
|
|
|
|
|
|
|
struct { |
|
|
|
float size = 1.0f; // GL_POINT_SIZE |
|
|
|
GLboolean program_control = GL_FALSE; // GL_PROGRAM_POINT_SIZE |
|
|
|
GLfloat size = 1.0f; // GL_POINT_SIZE |
|
|
|
} point; |
|
|
|
|
|
|
|
struct { |
|
|
|
|