diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2020-07-17 19:51:26 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2020-07-18 04:43:52 +0300 |
commit | 35f1b3e43b37006486b94675466cf4260087e269 (patch) | |
tree | 948195fd46b9e2165081e1ecf792ae63b1ab2319 /source/blender | |
parent | faeaf5325554e37981424ded5add7bf2df484c55 (diff) |
Cleanup: GPU: Wrap GL_UNPACK_ROW_LENGTH in GPU_state
Also go back to default value of 0 after usage.
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/editors/screen/glutil.c | 8 | ||||
-rw-r--r-- | source/blender/gpu/GPU_state.h | 1 | ||||
-rw-r--r-- | source/blender/gpu/intern/gpu_draw.c | 7 | ||||
-rw-r--r-- | source/blender/gpu/intern/gpu_state.c | 6 |
4 files changed, 13 insertions, 9 deletions
diff --git a/source/blender/editors/screen/glutil.c b/source/blender/editors/screen/glutil.c index 6b7ea447665..5c3b1944164 100644 --- a/source/blender/editors/screen/glutil.c +++ b/source/blender/editors/screen/glutil.c @@ -120,9 +120,6 @@ void immDrawPixelsTexScaled_clipping(IMMDrawPixelsTexState *state, type = GL_UNSIGNED_BYTE; } - GLint unpack_row_length; - glGetIntegerv(GL_UNPACK_ROW_LENGTH, &unpack_row_length); - eGPUTextureFormat gpu_format = (type == GL_FLOAT) ? GPU_RGBA16F : GPU_RGBA8; eGPUDataFormat gpu_data = (type == GL_FLOAT) ? GPU_DATA_FLOAT : GPU_DATA_UNSIGNED_BYTE; GPUTexture *texture = GPU_texture_create_nD( @@ -165,7 +162,7 @@ void immDrawPixelsTexScaled_clipping(IMMDrawPixelsTexState *state, immUniformColor4fv((color) ? color : white); } - glPixelStorei(GL_UNPACK_ROW_LENGTH, img_w); + GPU_unpack_row_length_set(img_w); for (subpart_y = 0; subpart_y < nsubparts_y; subpart_y++) { for (subpart_x = 0; subpart_x < nsubparts_x; subpart_x++) { @@ -259,7 +256,8 @@ void immDrawPixelsTexScaled_clipping(IMMDrawPixelsTexState *state, GPU_texture_unbind(texture); GPU_texture_free(texture); - glPixelStorei(GL_UNPACK_ROW_LENGTH, unpack_row_length); + /* Restore default. */ + GPU_unpack_row_length_set(0); } void immDrawPixelsTexScaled(IMMDrawPixelsTexState *state, diff --git a/source/blender/gpu/GPU_state.h b/source/blender/gpu/GPU_state.h index bdff3e66217..36a82e31521 100644 --- a/source/blender/gpu/GPU_state.h +++ b/source/blender/gpu/GPU_state.h @@ -69,6 +69,7 @@ void GPU_color_mask(bool r, bool g, bool b, bool a); void GPU_depth_mask(bool depth); bool GPU_depth_mask_get(void); void GPU_stencil_mask(uint stencil); +void GPU_unpack_row_length_set(uint len); void GPU_flush(void); void GPU_finish(void); diff --git a/source/blender/gpu/intern/gpu_draw.c b/source/blender/gpu/intern/gpu_draw.c index 9fdb98cfbf6..e5f49555265 100644 --- a/source/blender/gpu/intern/gpu_draw.c +++ b/source/blender/gpu/intern/gpu_draw.c @@ -683,9 +683,7 @@ static void gpu_texture_update_unscaled(uchar *rect, { /* Partial update without scaling. Stride and offset are used to copy only a * subset of a possible larger buffer than what we are updating. */ - GLint row_length; - glGetIntegerv(GL_UNPACK_ROW_LENGTH, &row_length); - glPixelStorei(GL_UNPACK_ROW_LENGTH, tex_stride); + GPU_unpack_row_length_set(tex_stride); if (layer >= 0) { if (rect_float == NULL) { @@ -724,7 +722,8 @@ static void gpu_texture_update_unscaled(uchar *rect, } } - glPixelStorei(GL_UNPACK_ROW_LENGTH, row_length); + /* Restore default. */ + GPU_unpack_row_length_set(0); } static void gpu_texture_update_from_ibuf( diff --git a/source/blender/gpu/intern/gpu_state.c b/source/blender/gpu/intern/gpu_state.c index b52504eb492..8dc246904df 100644 --- a/source/blender/gpu/intern/gpu_state.c +++ b/source/blender/gpu/intern/gpu_state.c @@ -181,6 +181,11 @@ void GPU_finish(void) glFinish(); } +void GPU_unpack_row_length_set(uint len) +{ + glPixelStorei(GL_UNPACK_ROW_LENGTH, len); +} + void GPU_logic_op_xor_set(bool enable) { if (enable) { @@ -413,6 +418,7 @@ void GPU_state_init(void) glDisable(GL_CULL_FACE); glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); /* Is default but better be explicit. */ glEnable(GL_MULTISAMPLE); |