From 5c6d6eedb3c550dfe74f0e6349aaed99fc23f70d Mon Sep 17 00:00:00 2001 From: Chad Versace Date: Sat, 31 Mar 2018 01:15:09 -0700 Subject: [PATCH] dri: Add param driCreateConfigs(mutable_render_buffer) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If set, then the config will have __DRI_ATTRIB_MUTABLE_RENDER_BUFFER, which translates to EGL_MUTABLE_RENDER_BUFFER_BIT_KHR. Not used yet. Reviewed-by: Tapani Pälli --- src/gallium/state_trackers/dri/dri_screen.c | 4 ++-- src/mesa/drivers/dri/common/utils.c | 9 +++++++-- src/mesa/drivers/dri/common/utils.h | 3 ++- src/mesa/drivers/dri/i915/intel_screen.c | 4 ++-- src/mesa/drivers/dri/i965/intel_screen.c | 6 +++--- src/mesa/drivers/dri/nouveau/nouveau_screen.c | 2 +- src/mesa/drivers/dri/radeon/radeon_screen.c | 2 +- src/mesa/drivers/dri/swrast/swrast.c | 2 +- 8 files changed, 19 insertions(+), 13 deletions(-) diff --git a/src/gallium/state_trackers/dri/dri_screen.c b/src/gallium/state_trackers/dri/dri_screen.c index fe4e39b3f93..e5bc47391e7 100644 --- a/src/gallium/state_trackers/dri/dri_screen.c +++ b/src/gallium/state_trackers/dri/dri_screen.c @@ -274,7 +274,7 @@ dri_fill_in_modes(struct dri_screen *screen) depth_buffer_factor, back_buffer_modes, ARRAY_SIZE(back_buffer_modes), msaa_modes, 1, - GL_TRUE, !mixed_color_depth); + GL_TRUE, !mixed_color_depth, GL_FALSE); configs = driConcatConfigs(configs, new_configs); /* Multi-sample configs without an accumulation buffer. */ @@ -284,7 +284,7 @@ dri_fill_in_modes(struct dri_screen *screen) depth_buffer_factor, back_buffer_modes, ARRAY_SIZE(back_buffer_modes), msaa_modes+1, num_msaa_modes-1, - GL_FALSE, !mixed_color_depth); + GL_FALSE, !mixed_color_depth, GL_FALSE); configs = driConcatConfigs(configs, new_configs); } } diff --git a/src/mesa/drivers/dri/common/utils.c b/src/mesa/drivers/dri/common/utils.c index 86169d5c214..88835a7add5 100644 --- a/src/mesa/drivers/dri/common/utils.c +++ b/src/mesa/drivers/dri/common/utils.c @@ -147,7 +147,10 @@ driGetRendererString( char * buffer, const char * hardware_name, * \param color_depth_match Whether the color depth must match the zs depth * This forces 32-bit color to have 24-bit depth, and * 16-bit color to have 16-bit depth. - * + * \param mutable_render_buffer Enable __DRI_ATTRIB_MUTABLE_RENDER_BUFFER, + * which translates to + * EGL_MUTABLE_RENDER_BUFFER_BIT_KHR. + * * \returns * Pointer to any array of pointers to the \c __DRIconfig structures created * for the specified formats. If there is an error, \c NULL is returned. @@ -160,7 +163,8 @@ driCreateConfigs(mesa_format format, unsigned num_depth_stencil_bits, const GLenum * db_modes, unsigned num_db_modes, const uint8_t * msaa_samples, unsigned num_msaa_modes, - GLboolean enable_accum, GLboolean color_depth_match) + GLboolean enable_accum, GLboolean color_depth_match, + GLboolean mutable_render_buffer) { static const uint32_t masks_table[][4] = { /* MESA_FORMAT_B5G6R5_UNORM */ @@ -325,6 +329,7 @@ driCreateConfigs(mesa_format format, modes->yInverted = GL_TRUE; modes->sRGBCapable = is_srgb; + modes->mutableRenderBuffer = mutable_render_buffer; } } } diff --git a/src/mesa/drivers/dri/common/utils.h b/src/mesa/drivers/dri/common/utils.h index 7be0465c261..7c9719f9f42 100644 --- a/src/mesa/drivers/dri/common/utils.h +++ b/src/mesa/drivers/dri/common/utils.h @@ -45,7 +45,8 @@ driCreateConfigs(mesa_format format, unsigned num_depth_stencil_bits, const GLenum * db_modes, unsigned num_db_modes, const uint8_t * msaa_samples, unsigned num_msaa_modes, - GLboolean enable_accum, GLboolean color_depth_match); + GLboolean enable_accum, GLboolean color_depth_match, + GLboolean mutable_render_buffer); __DRIconfig **driConcatConfigs(__DRIconfig **a, __DRIconfig **b); diff --git a/src/mesa/drivers/dri/i915/intel_screen.c b/src/mesa/drivers/dri/i915/intel_screen.c index 882c498622f..27be9219e47 100644 --- a/src/mesa/drivers/dri/i915/intel_screen.c +++ b/src/mesa/drivers/dri/i915/intel_screen.c @@ -1094,7 +1094,7 @@ intel_screen_make_configs(__DRIscreen *dri_screen) num_depth_stencil_bits, back_buffer_modes, 2, singlesample_samples, 1, - false, false); + false, false, false); configs = driConcatConfigs(configs, new_configs); } @@ -1116,7 +1116,7 @@ intel_screen_make_configs(__DRIscreen *dri_screen) depth_bits, stencil_bits, 1, back_buffer_modes, 1, singlesample_samples, 1, - true, false); + true, false, false); configs = driConcatConfigs(configs, new_configs); } diff --git a/src/mesa/drivers/dri/i965/intel_screen.c b/src/mesa/drivers/dri/i965/intel_screen.c index cb357419a77..f1c195c5d14 100644 --- a/src/mesa/drivers/dri/i965/intel_screen.c +++ b/src/mesa/drivers/dri/i965/intel_screen.c @@ -2195,7 +2195,7 @@ intel_screen_make_configs(__DRIscreen *dri_screen) num_depth_stencil_bits, back_buffer_modes, 2, singlesample_samples, 1, - false, false); + false, false, false); configs = driConcatConfigs(configs, new_configs); } @@ -2222,7 +2222,7 @@ intel_screen_make_configs(__DRIscreen *dri_screen) depth_bits, stencil_bits, 1, back_buffer_modes, 1, singlesample_samples, 1, - true, false); + true, false, false); configs = driConcatConfigs(configs, new_configs); } @@ -2289,7 +2289,7 @@ intel_screen_make_configs(__DRIscreen *dri_screen) back_buffer_modes, 1, multisample_samples, num_msaa_modes, - false, false); + false, false, false); configs = driConcatConfigs(configs, new_configs); } diff --git a/src/mesa/drivers/dri/nouveau/nouveau_screen.c b/src/mesa/drivers/dri/nouveau/nouveau_screen.c index 95b3469daae..a3be805d048 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_screen.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_screen.c @@ -78,7 +78,7 @@ nouveau_get_configs(uint32_t chipset) ARRAY_SIZE(back_buffer_modes), msaa_samples, ARRAY_SIZE(msaa_samples), - GL_TRUE, chipset < 0x10); + GL_TRUE, chipset < 0x10, GL_FALSE); assert(config); configs = driConcatConfigs(configs, config); diff --git a/src/mesa/drivers/dri/radeon/radeon_screen.c b/src/mesa/drivers/dri/radeon/radeon_screen.c index 51af452e245..438844aac0c 100644 --- a/src/mesa/drivers/dri/radeon/radeon_screen.c +++ b/src/mesa/drivers/dri/radeon/radeon_screen.c @@ -804,7 +804,7 @@ __DRIconfig **radeonInitScreen2(__DRIscreen *psp) ARRAY_SIZE(back_buffer_modes), msaa_samples_array, ARRAY_SIZE(msaa_samples_array), - GL_TRUE, GL_FALSE); + GL_TRUE, GL_FALSE, GL_FALSE); configs = driConcatConfigs(configs, new_configs); } diff --git a/src/mesa/drivers/dri/swrast/swrast.c b/src/mesa/drivers/dri/swrast/swrast.c index 4be993a9532..524f9b17c6d 100644 --- a/src/mesa/drivers/dri/swrast/swrast.c +++ b/src/mesa/drivers/dri/swrast/swrast.c @@ -272,7 +272,7 @@ swrastFillInModes(__DRIscreen *psp, depth_bits_array, stencil_bits_array, depth_buffer_factor, back_buffer_modes, back_buffer_factor, msaa_samples_array, 1, - GL_TRUE, GL_FALSE); + GL_TRUE, GL_FALSE, GL_FALSE); if (configs == NULL) { fprintf(stderr, "[%s:%u] Error creating FBConfig!\n", __func__, __LINE__);