[Mesa-dev] [Review Request (master branch)] svga: Use pipe_shader_state_from_tgsi to set shader state
Use pipe_shader_state_from_tgsi() to set shader state for transformed shader so that we get all correct data for respective shader state. This fixes several regressed glretrace, piglit crashes found during merging upsteam mesa Fixes: bf12bc2dd7a2 (draw: add nir info gathering and building support) Reviewed-by: Charmaine Lee --- src/gallium/drivers/svga/svga_state_tgsi_transform.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gallium/drivers/svga/svga_state_tgsi_transform.c b/src/gallium/drivers/svga/svga_state_tgsi_transform.c index b567aab6bc8..9d701b73772 100644 --- a/src/gallium/drivers/svga/svga_state_tgsi_transform.c +++ b/src/gallium/drivers/svga/svga_state_tgsi_transform.c @@ -131,7 +131,7 @@ emulate_point_sprite(struct svga_context *svga, tgsi_dump(new_tokens, 0); } - templ.tokens = new_tokens; + pipe_shader_state_from_tgsi(, new_tokens); templ.stream_output.num_outputs = 0; if (streamout) { -- 2.17.1 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [Review Request (master branch) 2/2] svga: fix size of format_conversion_table[]
Since we are now using sparse matrix for format_conversion_table, we have to make sure we have last entry in table which gives the sense of required size of format_conversion_table Fixes: 84db6ba7 ("svga: Drop unsupported formats from the format table") Reviewed-by: Charmaine Lee --- src/gallium/drivers/svga/svga_format.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gallium/drivers/svga/svga_format.c b/src/gallium/drivers/svga/svga_format.c index 488c68785c1..3f68f0cd67e 100644 --- a/src/gallium/drivers/svga/svga_format.c +++ b/src/gallium/drivers/svga/svga_format.c @@ -207,6 +207,8 @@ static const struct vgpu10_format_entry format_conversion_table[] = [ PIPE_FORMAT_L32_SINT ] = { SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, SVGA3D_R32_SINT, TF_XXX1 }, [ PIPE_FORMAT_L32A32_SINT ] = { SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, SVGA3D_R32G32_SINT, TF_XXXY }, [ PIPE_FORMAT_R10G10B10A2_UINT ] = { SVGA3D_R10G10B10A2_UINT, SVGA3D_R10G10B10A2_UINT, SVGA3D_R10G10B10A2_UINT, 0 }, + /* Must specify following entry to give the sense of size of format_conversion_table[] */ + [ PIPE_FORMAT_COUNT ] = {SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 }, }; -- 2.17.1 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [Review Request (master branch) 1/2] svga: Ensure copy_region_fallback can be used for resource copy
Verify preconditions for copy_region_fallback() before using it, else try cpu_blit if it fails to meet preconditions Fixes crash with viewperf after merged-master-2019-12-10 Fixes: b30589cbd3dd ("mesa/st: Reuse st_choose_matching_format from st_choose_format()") Reviewed-by: Charmaine Lee https://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [Review Request (master branch)] compiler: change datatype of 'spacing' in shader_info with uint_8
With msvc compiler, enum is signed int. It caused failures with piglit test and glretrace gl4_arb_tessellation_shader_v1 Fixes 84a1a2578dab ('compiler: pack shader_info from 160 bytes to 96 bytes') Fixes vmware bug 2480550 Reviewed-by: Brian Paul Reviewed-by: Charmaine Lee --- src/compiler/shader_info.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/compiler/shader_info.h b/src/compiler/shader_info.h index d13e51a47a6..233ee84893a 100644 --- a/src/compiler/shader_info.h +++ b/src/compiler/shader_info.h @@ -312,7 +312,7 @@ typedef struct shader_info { /** The number of vertices in the TCS output patch. */ uint8_t tcs_vertices_out; - enum gl_tess_spacing spacing:2; + uint8_t spacing:2; // enum gl_tess_spacing /** Is the vertex order counterclockwise? */ bool ccw:1; -- 2.17.1 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [Review Request (master branch)] st/mesa: release tgsi tokens for shader states
Since we are using st_common_variant while creating variant for vertext program, we can release tokens created in st_create_vp_variant which are already stored in respective states. This fix memory leak found with piglit tests Fixes bc99b22a305b ('st/mesa: use a separate VS variant for the draw module') Reviewed-by: Charmaine Lee --- src/mesa/state_tracker/st_program.c | 4 1 file changed, 4 insertions(+) diff --git a/src/mesa/state_tracker/st_program.c b/src/mesa/state_tracker/st_program.c index a9ff68c1f50..ef10399fa18 100644 --- a/src/mesa/state_tracker/st_program.c +++ b/src/mesa/state_tracker/st_program.c @@ -694,6 +694,10 @@ st_create_vp_variant(struct st_context *st, else vpv->base.driver_shader = pipe->create_vs_state(pipe, ); + if (state.tokens) { + tgsi_free_tokens(state.tokens); + } + return vpv; } -- 2.17.1 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] st/nir: fix illegal designated initializer in st_glsl_to_nir.cpp
Looks good to me. Reviewed-by: Neha Bhende Regards, Neha From: Brian Paul Sent: Wednesday, September 11, 2019 11:23 AM To: mesa-dev@lists.freedesktop.org Cc: Neha Bhende; Charmaine Lee; aio.olive...@intel.com Subject: [PATCH] st/nir: fix illegal designated initializer in st_glsl_to_nir.cpp IIRC, designated initializers are not legal C++. Fixes the MSVC build. Fixes: 83fd1e58 ("glsl/nir: Add and use a gl_nir_link() function") --- src/mesa/state_tracker/st_glsl_to_nir.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mesa/state_tracker/st_glsl_to_nir.cpp b/src/mesa/state_tracker/st_glsl_to_nir.cpp index 280a778..d6a0264 100644 --- a/src/mesa/state_tracker/st_glsl_to_nir.cpp +++ b/src/mesa/state_tracker/st_glsl_to_nir.cpp @@ -688,7 +688,7 @@ st_link_nir(struct gl_context *ctx, */ if (shader_program->data->spirv) { static const gl_nir_linker_options opts = { - .fill_parameters = true, + true /*fill_parameters */ }; if (!gl_nir_link(ctx, shader_program, )) return GL_FALSE; -- 1.8.5.6 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] gallivm: fix a missing argument to CreateAtomicCmpXchg
LGTM Reviewed-by: Neha Bhende Regards, Neha From: Charmaine Lee Sent: Thursday, August 1, 2019 3:56 PM To: mesa-dev@lists.freedesktop.org; Brian Paul; Neha Bhende; Roland Scheidegger; Jose Fonseca; airl...@redhat.com Cc: Charmaine Lee Subject: [PATCH] gallivm: fix a missing argument to CreateAtomicCmpXchg This patch fixes a missing argument to CreateAtomicCmpXchg for older version of LLVM. --- src/gallium/auxiliary/gallivm/lp_bld_misc.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp index 79d1029..8205d24 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp +++ b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp @@ -831,6 +831,7 @@ LLVMValueRef LLVMBuildAtomicCmpXchg(LLVMBuilderRef B, LLVMValueRef Ptr, /* LLVM 3.8 doesn't have a second ordering and uses old SynchronizationScope enum */ return llvm::wrap(llvm::unwrap(B)->CreateAtomicCmpXchg(llvm::unwrap(Ptr), llvm::unwrap(Cmp), llvm::unwrap(New), mapFromLLVMOrdering(SuccessOrdering), + mapFromLLVMOrdering(FailureOrdering), SingleThread ? llvm::SynchronizationScope::SingleThread : llvm::SynchronizationScope::CrossThread)); } #endif -- 1.8.5.6 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [Review Request (master branch)] draw: fix memory leak introduced 7720ce32a
We need to free memory allocation PrimitiveOffsets in draw_gs_destroy(). This fixes memory leak found while running piglit on windows. Fixes: 7720ce32a ("draw: add support to tgsi paths for geometry streams. (v2)") Tested with piglit Reviewed-by: Brian Paul Reviewed-by: Charmaine Lee --- src/gallium/auxiliary/draw/draw_gs.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/gallium/auxiliary/draw/draw_gs.c b/src/gallium/auxiliary/draw/draw_gs.c index 6420cfbb261..c752163ee05 100644 --- a/src/gallium/auxiliary/draw/draw_gs.c +++ b/src/gallium/auxiliary/draw/draw_gs.c @@ -753,8 +753,10 @@ void draw_gs_destroy( struct draw_context *draw ) { int i; if (draw->gs.tgsi.machine) { - for (i = 0; i < TGSI_MAX_VERTEX_STREAMS; i++) + for (i = 0; i < TGSI_MAX_VERTEX_STREAMS; i++) { align_free(draw->gs.tgsi.machine->Primitives[i]); + align_free(draw->gs.tgsi.machine->PrimitiveOffsets[i]); + } tgsi_exec_machine_destroy(draw->gs.tgsi.machine); } } -- 2.17.1 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH 2/2] svga: add SVGA_NO_LOGGING env var (v2)
For series, Reviewed-by: Neha Bhende Regards, Neha From: Brian Paul Sent: Wednesday, May 1, 2019 2:55 PM To: mesa-dev@lists.freedesktop.org Cc: Neha Bhende; Charmaine Lee; Deepak Singh Rawat; Thomas Hellstrom; mesa-sta...@lists.freedesktop.org Subject: [PATCH 2/2] svga: add SVGA_NO_LOGGING env var (v2) valgrind crashes when we try to initialize host logging. This env var can be used to disable logging. v2: rebase onto "svga: move host logging to winsys". Cc: mesa-sta...@lists.freedesktop.org --- docs/envvars.html | 3 +++ src/gallium/drivers/svga/svga_screen.c | 16 +++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/docs/envvars.html b/docs/envvars.html index c9733e6..43d3a6c 100644 --- a/docs/envvars.html +++ b/docs/envvars.html @@ -338,6 +338,9 @@ See src/mesa/state_tracker/st_debug.c for other options. for details. SVGA_EXTRA_LOGGING - if set, enables extra logging to the vmware.log file, such as the OpenGL program's name and command line arguments. +SVGA_NO_LOGGING - if set, disables logging to the vmware.log file. +This is useful when using Valgrind because it otherwise crashes when +initializing the host log feature. See the driver code for other, lesser-used variables. diff --git a/src/gallium/drivers/svga/svga_screen.c b/src/gallium/drivers/svga/svga_screen.c index 664b9bf..f747ff7 100644 --- a/src/gallium/drivers/svga/svga_screen.c +++ b/src/gallium/drivers/svga/svga_screen.c @@ -917,6 +917,16 @@ init_logging(struct pipe_screen *screen) } +/** + * no-op logging function to use when SVGA_NO_LOGGING is set. + */ +static void +nop_host_log(struct svga_winsys_screen *sws, const char *message) +{ + /* nothing */ +} + + static void svga_destroy_screen( struct pipe_screen *screen ) { @@ -1134,7 +1144,11 @@ svga_screen_create(struct svga_winsys_screen *sws) svga_screen_cache_init(svgascreen); - init_logging(screen); + if (debug_get_bool_option("SVGA_NO_LOGGING", FALSE) == TRUE) { + svgascreen->sws->host_log = nop_host_log; + } else { + init_logging(screen); + } return screen; error2: -- 1.8.5.6 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] glsl: work around MinGW 7.x compiler bug
LGTM Reviewed-by: Neha Bhende Regards, Neha From: Brian Paul Sent: Wednesday, May 1, 2019 1:28 PM To: mesa-dev@lists.freedesktop.org Cc: Neha Bhende; Jose Fonseca; Charmaine Lee Subject: [PATCH] glsl: work around MinGW 7.x compiler bug I'm not sure what triggered this, but building with scons platform=windows toolchain=crossmingw machine=x86 build=profile with MinGW g++ 7.3 or 7.4 causes an internal compiler error. We can work around it by forcing -O1 optimization. --- src/compiler/glsl/builtin_variables.cpp | 15 +++ 1 file changed, 15 insertions(+) diff --git a/src/compiler/glsl/builtin_variables.cpp b/src/compiler/glsl/builtin_variables.cpp index 17ee80c..1b9963a 100644 --- a/src/compiler/glsl/builtin_variables.cpp +++ b/src/compiler/glsl/builtin_variables.cpp @@ -21,6 +21,21 @@ * DEALINGS IN THE SOFTWARE. */ + +/** + * Building this file with MinGW g++ 7.3 or 7.4 with: + * scons platform=windows toolchain=crossmingw machine=x86 build=profile + * triggers an internal compiler error. + * Overriding the optimization level to -O1 works around the issue. + * MinGW 5.3.1 does not seem to have the bug, neither does 8.3. So for now + * we're simply testing for version 7.x here. + */ +#if defined(__MINGW32__) && __GNUC__ == 7 +#warning "disabling optimizations for this file to work around compiler bug in MiGW gcc 7.x" +#pragma GCC optimize("O1") +#endif + + #include "ir.h" #include "ir_builder.h" #include "linker.h" -- 1.8.5.6 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] llvmpipe: init some vars to NULL to silence MinGW compiler warnings
LGTM. Reviewed-by: Neha Bhende Regards, Neha From: mesa-dev on behalf of Brian Paul Sent: Wednesday, May 1, 2019 9:48 AM To: mesa-dev@lists.freedesktop.org Cc: Neha Bhende Subject: [Mesa-dev] [PATCH] llvmpipe: init some vars to NULL to silence MinGW compiler warnings --- src/gallium/auxiliary/gallivm/lp_bld_format_s3tc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gallium/auxiliary/gallivm/lp_bld_format_s3tc.c b/src/gallium/auxiliary/gallivm/lp_bld_format_s3tc.c index 9561c34..90b2be9 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_format_s3tc.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_format_s3tc.c @@ -2191,7 +2191,7 @@ lp_build_fetch_s3tc_rgba_aos(struct gallivm_state *gallivm, rgba = LLVMGetUndef(i128_vectype); for (count = 0; count < n / 4; count++) { - LLVMValueRef colors, codewords, alpha_lo, alpha_hi; + LLVMValueRef colors, codewords, alpha_lo = NULL, alpha_hi = NULL; i4 = lp_build_extract_range(gallivm, i, count * 4, 4); j4 = lp_build_extract_range(gallivm, j, count * 4, 4); @@ -2230,7 +2230,7 @@ lp_build_fetch_s3tc_rgba_aos(struct gallivm_state *gallivm, rgba = LLVMBuildBitCast(builder, rgba, i8_vectype, ""); } else { - LLVMValueRef colors, codewords, alpha_lo, alpha_hi; + LLVMValueRef colors, codewords, alpha_lo = NULL, alpha_hi = NULL; lp_build_gather_s3tc(gallivm, n, format_desc, , , _lo, _hi, base_ptr, offset); -- 1.8.5.6 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Fmesa-devdata=02%7C01%7Cbhenden%40vmware.com%7C7ecdd0d590fb4d22d32408d6ce54f538%7Cb39138ca3cee4b4aa4d6cd83d9dd62f0%7C0%7C1%7C636923261641738945sdata=kw%2F%2BkO%2FLSjMh%2FcW8eHicq2VSHJ2wRdpjHsPtWg4rc10%3Dreserved=0 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] svga: add SVGA_NO_LOGGING env var
Looks reasonable to me. Reviewed-by: Neha Bhende Regards, Neha From: mesa-dev on behalf of Brian Paul Sent: Wednesday, May 1, 2019 9:48 AM To: mesa-dev@lists.freedesktop.org Cc: mesa-sta...@lists.freedesktop.org; Neha Bhende; Deepak Singh Rawat Subject: [Mesa-dev] [PATCH] svga: add SVGA_NO_LOGGING env var valgrind crashes when we try to initialize host logging. This env var can be used to disable logging. Cc: mesa-sta...@lists.freedesktop.org --- docs/envvars.html | 3 +++ src/gallium/drivers/svga/svga_screen.c | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/envvars.html b/docs/envvars.html index c9733e6..43d3a6c 100644 --- a/docs/envvars.html +++ b/docs/envvars.html @@ -338,6 +338,9 @@ See src/mesa/state_tracker/st_debug.c for other options. for details. SVGA_EXTRA_LOGGING - if set, enables extra logging to the vmware.log file, such as the OpenGL program's name and command line arguments. +SVGA_NO_LOGGING - if set, disables logging to the vmware.log file. +This is useful when using Valgrind because it otherwise crashes when +initializing the host log feature. See the driver code for other, lesser-used variables. diff --git a/src/gallium/drivers/svga/svga_screen.c b/src/gallium/drivers/svga/svga_screen.c index 6cb5a14..8158950 100644 --- a/src/gallium/drivers/svga/svga_screen.c +++ b/src/gallium/drivers/svga/svga_screen.c @@ -1134,7 +1134,9 @@ svga_screen_create(struct svga_winsys_screen *sws) svga_screen_cache_init(svgascreen); - init_logging(screen); + if (debug_get_bool_option("SVGA_NO_LOGGING", FALSE) == FALSE) { + init_logging(screen); + } return screen; error2: -- 1.8.5.6 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Fmesa-devdata=02%7C01%7Cbhenden%40vmware.com%7Cfd9f3e778e56480cc64708d6ce54d0f9%7Cb39138ca3cee4b4aa4d6cd83d9dd62f0%7C0%7C1%7C636923261021926972sdata=c3YZTbcPzMc5HYTO%2FB%2FGWrztCwBXhKBnB21XUfLg0n0%3Dreserved=0 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] st/mesa: fix texture deletion context mix-up issues (v2)
Looks good to me. Reviewed-by: Neha Bhende Regards, Neha From: mesa-dev on behalf of Brian Paul Sent: Friday, March 22, 2019 12:51 PM To: mesa-dev@lists.freedesktop.org Cc: Neha Bhende Subject: [Mesa-dev] [PATCH] st/mesa: fix texture deletion context mix-up issues (v2) When we destroy a context, we need to temporarily make that context the current one for the thread. That's because during context tear-down we make many calls to _mesa_reference_texobj(, NULL). Note there's no context parameter. If the texture's refcount goes to zero and we need to delete it, we use the thread's current context. But if that context isn't the context we're tearing down, we get into trouble when deallocating sampler views. See patch 593e36f956 ("st/mesa: implement "zombie" sampler views (v2)") for background information. Also, we need to release any sampler views attached to the fallback textures. Fixes a crash on exit with a glretrace of the Nobel Clinician application. v2: at end of st_destroy_context(), check if save_ctx == ctx and unbind the context if so. --- src/mesa/state_tracker/st_context.c | 51 - 1 file changed, 39 insertions(+), 12 deletions(-) diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c index f037384..09d467a 100644 --- a/src/mesa/state_tracker/st_context.c +++ b/src/mesa/state_tracker/st_context.c @@ -917,15 +917,39 @@ st_destroy_context(struct st_context *st) { struct gl_context *ctx = st->ctx; struct st_framebuffer *stfb, *next; + struct gl_framebuffer *save_drawbuffer; + struct gl_framebuffer *save_readbuffer; + + /* Save the current context and draw/read buffers*/ + GET_CURRENT_CONTEXT(save_ctx); + if (save_ctx) { + save_drawbuffer = save_ctx->WinSysDrawBuffer; + save_readbuffer = save_ctx->WinSysReadBuffer; + } else { + save_drawbuffer = save_readbuffer = NULL; + } - GET_CURRENT_CONTEXT(curctx); + /* +* We need to bind the context we're deleting so that +* _mesa_reference_texobj_() uses this context when deleting textures. +* Similarly for framebuffer objects, etc. +*/ + _mesa_make_current(ctx, NULL, NULL); - if (curctx == NULL) { - /* No current context, but we need one to release - * renderbuffer surface when we release framebuffer. - * So temporarily bind the context. - */ - _mesa_make_current(ctx, NULL, NULL); + /* This must be called first so that glthread has a chance to finish */ + _mesa_glthread_destroy(ctx); + + _mesa_HashWalk(ctx->Shared->TexObjects, destroy_tex_sampler_cb, st); + + /* For the fallback textures, free any sampler views belonging to this +* context. +*/ + for (unsigned i = 0; i < NUM_TEXTURE_TARGETS; i++) { + struct st_texture_object *stObj = + st_texture_object(ctx->Shared->FallbackTex[i]); + if (stObj) { + st_texture_release_context_sampler_view(st, stObj); + } } st_context_free_zombie_objects(st); @@ -933,11 +957,6 @@ st_destroy_context(struct st_context *st) mtx_destroy(>zombie_sampler_views.mutex); mtx_destroy(>zombie_shaders.mutex); - /* This must be called first so that glthread has a chance to finish */ - _mesa_glthread_destroy(ctx); - - _mesa_HashWalk(ctx->Shared->TexObjects, destroy_tex_sampler_cb, st); - st_reference_fragprog(st, >fp, NULL); st_reference_prog(st, >gp, NULL); st_reference_vertprog(st, >vp, NULL); @@ -965,4 +984,12 @@ st_destroy_context(struct st_context *st) st = NULL; free(ctx); + + if (save_ctx == ctx) { + /* unbind the context we just deleted */ + _mesa_make_current(NULL, NULL, NULL); + } else { + /* Restore the current context and draw/read buffers (may be NULL) */ + _mesa_make_current(save_ctx, save_drawbuffer, save_readbuffer); + } } -- 1.8.5.6 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Fmesa-devdata=02%7C01%7Cbhenden%40vmware.com%7Ce45f81c0931c4632b08f08d6af001248%7Cb39138ca3cee4b4aa4d6cd83d9dd62f0%7C0%7C0%7C63612186127578sdata=tJMl2feeW7EsZQcvpFWKvifdAAF7GBY43%2FYTdUAXWL8%3Dreserved=0 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] st/mesa: fix texture deletion context mix-up issues
Thanks for the fix! Reviewed-by: Neha Bhende Regards, Neha From: Brian Paul Sent: Thursday, March 21, 2019 6:19 PM To: mesa-dev@lists.freedesktop.org Cc: Neha Bhende Subject: [PATCH] st/mesa: fix texture deletion context mix-up issues When we destroy a context, we need to temporarily make that context the current one for the thread. That's because during context tear-down we make many calls to _mesa_reference_texobj(, NULL). Note there's no context parameter. If the texture's refcount goes to zero and we need to delete it, we use the thread's current context. But if that context isn't the context we're tearing down, we get into trouble when deallocating sampler views. See patch 593e36f956 ("st/mesa: implement "zombie" sampler views (v2)") for background information. Also, we need to release any sampler views attached to the fallback textures. Fixes a crash on exit with a glretrace of the Nobel Clinician application. --- src/mesa/state_tracker/st_context.c | 46 +++-- 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c index f037384..9b23d75 100644 --- a/src/mesa/state_tracker/st_context.c +++ b/src/mesa/state_tracker/st_context.c @@ -917,15 +917,39 @@ st_destroy_context(struct st_context *st) { struct gl_context *ctx = st->ctx; struct st_framebuffer *stfb, *next; + struct gl_framebuffer *save_drawbuffer; + struct gl_framebuffer *save_readbuffer; + + /* Save the current context and draw/read buffers*/ + GET_CURRENT_CONTEXT(save_ctx); + if (save_ctx) { + save_drawbuffer = save_ctx->WinSysDrawBuffer; + save_readbuffer = save_ctx->WinSysReadBuffer; + } else { + save_drawbuffer = save_readbuffer = NULL; + } - GET_CURRENT_CONTEXT(curctx); + /* +* We need to bind the context we're deleting so that +* _mesa_reference_texobj_() uses this context when deleting textures. +* Similarly for framebuffer objects, etc. +*/ + _mesa_make_current(ctx, NULL, NULL); - if (curctx == NULL) { - /* No current context, but we need one to release - * renderbuffer surface when we release framebuffer. - * So temporarily bind the context. - */ - _mesa_make_current(ctx, NULL, NULL); + /* This must be called first so that glthread has a chance to finish */ + _mesa_glthread_destroy(ctx); + + _mesa_HashWalk(ctx->Shared->TexObjects, destroy_tex_sampler_cb, st); + + /* For the fallback textures, free any sampler views belonging to this +* context. +*/ + for (unsigned i = 0; i < NUM_TEXTURE_TARGETS; i++) { + struct st_texture_object *stObj = + st_texture_object(ctx->Shared->FallbackTex[i]); + if (stObj) { + st_texture_release_context_sampler_view(st, stObj); + } } st_context_free_zombie_objects(st); @@ -933,11 +957,6 @@ st_destroy_context(struct st_context *st) mtx_destroy(>zombie_sampler_views.mutex); mtx_destroy(>zombie_shaders.mutex); - /* This must be called first so that glthread has a chance to finish */ - _mesa_glthread_destroy(ctx); - - _mesa_HashWalk(ctx->Shared->TexObjects, destroy_tex_sampler_cb, st); - st_reference_fragprog(st, >fp, NULL); st_reference_prog(st, >gp, NULL); st_reference_vertprog(st, >vp, NULL); @@ -965,4 +984,7 @@ st_destroy_context(struct st_context *st) st = NULL; free(ctx); + + /* Restore the current context and draw/read buffers */ + _mesa_make_current(save_ctx, save_drawbuffer, save_readbuffer); } -- 1.8.5.6 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH 8/8] gallium/util: remove pipe_sampler_view_release()
Looks great! For series, Reviewed-by: Neha Bhende Regards, Neha From: Brian Paul Sent: Thursday, March 14, 2019 12:37 PM To: mesa-dev@lists.freedesktop.org Cc: Neha Bhende; Jose Fonseca; Roland Scheidegger; Mathias Fröhlich Subject: [PATCH 8/8] gallium/util: remove pipe_sampler_view_release() It's no longer used. --- src/gallium/auxiliary/util/u_inlines.h | 20 1 file changed, 20 deletions(-) diff --git a/src/gallium/auxiliary/util/u_inlines.h b/src/gallium/auxiliary/util/u_inlines.h index fa1e920..567d3d0 100644 --- a/src/gallium/auxiliary/util/u_inlines.h +++ b/src/gallium/auxiliary/util/u_inlines.h @@ -192,26 +192,6 @@ pipe_sampler_view_reference(struct pipe_sampler_view **dst, *dst = src; } -/** - * Similar to pipe_sampler_view_reference() but always set the pointer to - * NULL and pass in the current context explicitly. - * - * If *ptr is non-NULL, it may refer to a view that was created in a different - * context (however, that context must still be alive). - */ -static inline void -pipe_sampler_view_release(struct pipe_context *ctx, - struct pipe_sampler_view **ptr) -{ - struct pipe_sampler_view *old_view = *ptr; - - if (pipe_reference_described(_view->reference, NULL, -(debug_reference_descriptor)debug_describe_sampler_view)) { - ctx->sampler_view_destroy(ctx, old_view); - } - *ptr = NULL; -} - static inline void pipe_so_target_reference(struct pipe_stream_output_target **dst, struct pipe_stream_output_target *src) -- 1.8.5.6 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] st/mesa: init hash keys with memset(), not designated initializers
Reviewed-by: Neha Bhende Regards, Neha From: mesa-dev on behalf of Brian Paul Sent: Friday, March 8, 2019 9:14 AM To: mesa-dev@lists.freedesktop.org Cc: Neha Bhende Subject: [Mesa-dev] [PATCH] st/mesa: init hash keys with memset(), not designated initializers Since the compiler may not zero-out padding in the object. Add a couple comments about this to prevent misunderstandings in the future. Fixes: 67d96816ff5 ("st/mesa: move, clean-up shader variant key decls/inits") --- src/mesa/state_tracker/st_atom_shader.c | 9 +++-- src/mesa/state_tracker/st_program.c | 13 ++--- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/mesa/state_tracker/st_atom_shader.c b/src/mesa/state_tracker/st_atom_shader.c index ac7a1a5..a4475e2 100644 --- a/src/mesa/state_tracker/st_atom_shader.c +++ b/src/mesa/state_tracker/st_atom_shader.c @@ -112,7 +112,10 @@ st_update_fp( struct st_context *st ) !stfp->variants->key.bitmap) { shader = stfp->variants->driver_shader; } else { - struct st_fp_variant_key key = {0}; + struct st_fp_variant_key key; + + /* use memset, not an initializer to be sure all memory is zeroed */ + memset(, 0, sizeof(key)); key.st = st->has_shareable_shaders ? NULL : st; @@ -168,7 +171,9 @@ st_update_vp( struct st_context *st ) stvp->variants->key.passthrough_edgeflags == st->vertdata_edgeflags) { st->vp_variant = stvp->variants; } else { - struct st_vp_variant_key key = {0}; + struct st_vp_variant_key key; + + memset(, 0, sizeof(key)); key.st = st->has_shareable_shaders ? NULL : st; diff --git a/src/mesa/state_tracker/st_program.c b/src/mesa/state_tracker/st_program.c index 6d669a9..fe03070 100644 --- a/src/mesa/state_tracker/st_program.c +++ b/src/mesa/state_tracker/st_program.c @@ -1807,7 +1807,10 @@ st_get_cp_variant(struct st_context *st, { struct pipe_context *pipe = st->pipe; struct st_basic_variant *v; - struct st_basic_variant_key key = {0}; + struct st_basic_variant_key key; + + /* use memset, not an initializer to be sure all memory is zeroed */ + memset(, 0, sizeof(key)); key.st = st->has_shareable_shaders ? NULL : st; @@ -2030,7 +2033,9 @@ st_precompile_shader_variant(struct st_context *st, switch (prog->Target) { case GL_VERTEX_PROGRAM_ARB: { struct st_vertex_program *p = (struct st_vertex_program *)prog; - struct st_vp_variant_key key = {0}; + struct st_vp_variant_key key; + + memset(, 0, sizeof(key)); key.st = st->has_shareable_shaders ? NULL : st; st_get_vp_variant(st, p, ); @@ -2057,7 +2062,9 @@ st_precompile_shader_variant(struct st_context *st, case GL_FRAGMENT_PROGRAM_ARB: { struct st_fragment_program *p = (struct st_fragment_program *)prog; - struct st_fp_variant_key key = {0}; + struct st_fp_variant_key key; + + memset(, 0, sizeof(key)); key.st = st->has_shareable_shaders ? NULL : st; st_get_fp_variant(st, p, ); -- 1.8.5.6 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Fmesa-devdata=02%7C01%7Cbhenden%40vmware.com%7C773d52000a58466ac0d508d6a3e98df6%7Cb39138ca3cee4b4aa4d6cd83d9dd62f0%7C0%7C0%7C636876620836813700sdata=pyvSVyPLzF8JXaiMptIRwvddQX2Hh7rm%2FAV%2BivL%2FOOE%3Dreserved=0 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] svga: remove SVGA_RELOC_READ flag in SVGA3D_BindGBSurface()
Reviewed-by: Neha Bhende Regards, Neha From: mesa-dev on behalf of Brian Paul Sent: Thursday, March 7, 2019 6:45 PM To: mesa-dev@lists.freedesktop.org Cc: Neha Bhende; Deepak Singh Rawat Subject: [Mesa-dev] [PATCH] svga: remove SVGA_RELOC_READ flag in SVGA3D_BindGBSurface() This fixes a rendering issue where UBO updates aren't always picked up by drawing calls. This issue effected the Webots robotics simulator. VMware bug 2175527. Testing Done: Webots replay, piglit, misc Linux games --- src/gallium/drivers/svga/svga_cmd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gallium/drivers/svga/svga_cmd.c b/src/gallium/drivers/svga/svga_cmd.c index 5557d20..6577c83 100644 --- a/src/gallium/drivers/svga/svga_cmd.c +++ b/src/gallium/drivers/svga/svga_cmd.c @@ -1693,7 +1693,7 @@ SVGA3D_BindGBSurface(struct svga_winsys_context *swc, return PIPE_ERROR_OUT_OF_MEMORY; swc->surface_relocation(swc, >sid, >mobid, surface, - SVGA_RELOC_READ | SVGA_RELOC_INTERNAL); + SVGA_RELOC_READ); swc->commit(swc); -- 1.8.5.6 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Fmesa-devdata=02%7C01%7Cbhenden%40vmware.com%7Cf11994e465a1400ada3708d6a37020df%7Cb39138ca3cee4b4aa4d6cd83d9dd62f0%7C0%7C0%7C636876099321425712sdata=CDWeq6zQkh%2FC1c1l5Amgf0DgyYUVYCdBHUrw0a6GWUA%3Dreserved=0 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH 5/5] st/mesa: minor refactoring of texture/sampler delete code
Reviewed-by: Neha Bhende Regards, Neha From: Brian Paul Sent: Friday, March 8, 2019 7:52 AM To: mesa-dev@lists.freedesktop.org Cc: Neha Bhende Subject: [PATCH 5/5] st/mesa: minor refactoring of texture/sampler delete code Rename st_texture_free_sampler_views() to st_delete_texture_sampler_views() to align with st_DeleteTextureObject(), its only caller. Move the call to st_texture_release_all_sampler_views() from st_DeleteTextureObject() to st_delete_texture_sampler_views() so all the sampler view clean-up code is in one place. --- src/mesa/state_tracker/st_cb_texture.c | 3 +-- src/mesa/state_tracker/st_sampler_view.c | 11 --- src/mesa/state_tracker/st_sampler_view.h | 3 ++- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c index 47d0612..2caf61e 100644 --- a/src/mesa/state_tracker/st_cb_texture.c +++ b/src/mesa/state_tracker/st_cb_texture.c @@ -187,8 +187,7 @@ st_DeleteTextureObject(struct gl_context *ctx, struct st_texture_object *stObj = st_texture_object(texObj); pipe_resource_reference(>pt, NULL); - st_texture_release_all_sampler_views(st, stObj); - st_texture_free_sampler_views(stObj); + st_delete_texture_sampler_views(st, stObj); simple_mtx_destroy(>validate_mutex); _mesa_delete_texture_object(ctx, texObj); } diff --git a/src/mesa/state_tracker/st_sampler_view.c b/src/mesa/state_tracker/st_sampler_view.c index 17c209c..e4eaf39 100644 --- a/src/mesa/state_tracker/st_sampler_view.c +++ b/src/mesa/state_tracker/st_sampler_view.c @@ -231,15 +231,20 @@ st_texture_release_all_sampler_views(struct st_context *st, /* - * Free the texture's st_sampler_views objects. This should be called - * after st_texture_release_all_sampler_views(). + * Delete the texture's sampler views and st_sampler_views containers. + * This is to be called just before a texture is deleted. */ void -st_texture_free_sampler_views(struct st_texture_object *stObj) +st_delete_texture_sampler_views(struct st_context *st, +struct st_texture_object *stObj) { + st_texture_release_all_sampler_views(st, stObj); + + /* Free the container of the current per-context sampler views */ free(stObj->sampler_views); stObj->sampler_views = NULL; + /* Free old sampler view containers */ while (stObj->sampler_views_old) { struct st_sampler_views *views = stObj->sampler_views_old; stObj->sampler_views_old = views->next; diff --git a/src/mesa/state_tracker/st_sampler_view.h b/src/mesa/state_tracker/st_sampler_view.h index d7a4c0d..1bd664d 100644 --- a/src/mesa/state_tracker/st_sampler_view.h +++ b/src/mesa/state_tracker/st_sampler_view.h @@ -66,7 +66,8 @@ st_texture_release_all_sampler_views(struct st_context *st, struct st_texture_object *stObj); void -st_texture_free_sampler_views(struct st_texture_object *stObj); +st_delete_texture_sampler_views(struct st_context *st, +struct st_texture_object *stObj); const struct st_sampler_view * st_texture_get_current_sampler_view(const struct st_context *st, -- 1.8.5.6 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] svga: refactor draw_vgpu10() function
Looks good to me. Just one nit pick, In definition of validate_index_buffer, extra space is required in argument list. Reviewed-by: Neha Bhende Regards, Neha Regards, Neha From: Brian Paul Sent: Thursday, March 7, 2019 3:23 PM To: mesa-dev@lists.freedesktop.org Cc: Neha Bhende Subject: [PATCH] svga: refactor draw_vgpu10() function The draw_vgpu10() function was huge. Move the code for preparing the vertex buffers and the index buffer into separate functions. --- src/gallium/drivers/svga/svga_draw.c | 246 --- 1 file changed, 141 insertions(+), 105 deletions(-) diff --git a/src/gallium/drivers/svga/svga_draw.c b/src/gallium/drivers/svga/svga_draw.c index 649bc22..a358170 100644 --- a/src/gallium/drivers/svga/svga_draw.c +++ b/src/gallium/drivers/svga/svga_draw.c @@ -507,62 +507,25 @@ vertex_buffers_equal(unsigned count, } +/* + * Prepare the vertex buffers for a drawing command. + */ static enum pipe_error -draw_vgpu10(struct svga_hwtnl *hwtnl, -const SVGA3dPrimitiveRange *range, -unsigned vcount, -struct pipe_resource *ib, -unsigned start_instance, unsigned instance_count) +validate_vertex_buffers(struct svga_hwtnl *hwtnl) { struct svga_context *svga = hwtnl->svga; struct pipe_resource *vbuffers[SVGA3D_INPUTREG_MAX]; struct svga_winsys_surface *vbuffer_handles[SVGA3D_INPUTREG_MAX]; - struct svga_winsys_surface *ib_handle; const unsigned vbuf_count = hwtnl->cmd.vbuf_count; int last_vbuf = -1; - enum pipe_error ret; unsigned i; assert(svga_have_vgpu10(svga)); - assert(hwtnl->cmd.prim_count == 0); - - /* We need to reemit all the current resource bindings along with the Draw -* command to be sure that the referenced resources are available for the -* Draw command, just in case the surfaces associated with the resources -* are paged out. -*/ - if (svga->rebind.val) { - ret = svga_rebind_framebuffer_bindings(svga); - if (ret != PIPE_OK) - return ret; - - ret = svga_rebind_shaders(svga); - if (ret != PIPE_OK) - return ret; - - /* Rebind stream output targets */ - ret = svga_rebind_stream_output_targets(svga); - if (ret != PIPE_OK) - return ret; - - /* No need to explicitly rebind index buffer and vertex buffers here. - * Even if the same index buffer or vertex buffers are referenced for this - * draw and we skip emitting the redundant set command, we will still - * reference the associated resources. - */ - } - - ret = validate_sampler_resources(svga); - if (ret != PIPE_OK) - return ret; - - ret = validate_constant_buffers(svga); - if (ret != PIPE_OK) - return ret; /* Get handle for each referenced vertex buffer */ for (i = 0; i < vbuf_count; i++) { - struct svga_buffer *sbuf = svga_buffer(hwtnl->cmd.vbufs[i].buffer.resource); + struct svga_buffer *sbuf = + svga_buffer(hwtnl->cmd.vbufs[i].buffer.resource); if (sbuf) { vbuffer_handles[i] = svga_buffer_handle(svga, >b.b, @@ -584,25 +547,11 @@ draw_vgpu10(struct svga_hwtnl *hwtnl, vbuffer_handles[i] = NULL; } - /* Get handle for the index buffer */ - if (ib) { - struct svga_buffer *sbuf = svga_buffer(ib); - - ib_handle = svga_buffer_handle(svga, ib, PIPE_BIND_INDEX_BUFFER); - if (!ib_handle) - return PIPE_ERROR_OUT_OF_MEMORY; - - assert(sbuf->key.flags & SVGA3D_SURFACE_BIND_INDEX_BUFFER); - (void) sbuf; /* silence unused var warning */ - } - else { - ib_handle = NULL; - } - /* setup vertex attribute input layout */ if (svga->state.hw_draw.layout_id != hwtnl->cmd.vdecl_layout_id) { - ret = SVGA3D_vgpu10_SetInputLayout(svga->swc, - hwtnl->cmd.vdecl_layout_id); + enum pipe_error ret = + SVGA3D_vgpu10_SetInputLayout(svga->swc, + hwtnl->cmd.vdecl_layout_id); if (ret != PIPE_OK) return ret; @@ -658,14 +607,13 @@ draw_vgpu10(struct svga_hwtnl *hwtnl, * corresponding entries in the device's vertex buffer list. */ for (i = 0; i < num_vbuffers; i++) { - boolean emit; - - emit = vertex_buffers_equal(1, - _attrs[i], - [i], - >state.hw_draw.vbuffer_attrs[i], - >state.hw_draw.vbuffers[i]); - + boolean emit = + vertex_buffers_equal(1, + _attrs[i], + [i], + >state.hw_draw.vbuffer_attrs[i], +
Re: [Mesa-dev] [PATCH] st/mesa: move, clean-up shader variant key decls/inits
Reviewed-by: Neha Bhende Regards, Neha From: Brian Paul Sent: Thursday, March 7, 2019 8:20 AM To: mesa-dev@lists.freedesktop.org Cc: Neha Bhende Subject: [PATCH] st/mesa: move, clean-up shader variant key decls/inits Move the variant key declarations inside the scope they're used. Use designated initializers instead of memset() calls. --- src/mesa/state_tracker/st_atom_shader.c | 8 src/mesa/state_tracker/st_program.c | 9 +++-- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/mesa/state_tracker/st_atom_shader.c b/src/mesa/state_tracker/st_atom_shader.c index c6faa3f..ac7a1a5 100644 --- a/src/mesa/state_tracker/st_atom_shader.c +++ b/src/mesa/state_tracker/st_atom_shader.c @@ -97,7 +97,6 @@ void st_update_fp( struct st_context *st ) { struct st_fragment_program *stfp; - struct st_fp_variant_key key; assert(st->ctx->FragmentProgram._Current); stfp = st_fragment_program(st->ctx->FragmentProgram._Current); @@ -113,7 +112,8 @@ st_update_fp( struct st_context *st ) !stfp->variants->key.bitmap) { shader = stfp->variants->driver_shader; } else { - memset(, 0, sizeof(key)); + struct st_fp_variant_key key = {0}; + key.st = st->has_shareable_shaders ? NULL : st; /* _NEW_FRAG_CLAMP */ @@ -155,7 +155,6 @@ void st_update_vp( struct st_context *st ) { struct st_vertex_program *stvp; - struct st_vp_variant_key key; /* find active shader and params -- Should be covered by * ST_NEW_VERTEX_PROGRAM @@ -169,7 +168,8 @@ st_update_vp( struct st_context *st ) stvp->variants->key.passthrough_edgeflags == st->vertdata_edgeflags) { st->vp_variant = stvp->variants; } else { - memset(, 0, sizeof key); + struct st_vp_variant_key key = {0}; + key.st = st->has_shareable_shaders ? NULL : st; /* When this is true, we will add an extra input to the vertex diff --git a/src/mesa/state_tracker/st_program.c b/src/mesa/state_tracker/st_program.c index c2daa4d..5e43a2e 100644 --- a/src/mesa/state_tracker/st_program.c +++ b/src/mesa/state_tracker/st_program.c @@ -1772,9 +1772,8 @@ st_get_cp_variant(struct st_context *st, { struct pipe_context *pipe = st->pipe; struct st_basic_variant *v; - struct st_basic_variant_key key; + struct st_basic_variant_key key = {0}; - memset(, 0, sizeof(key)); key.st = st->has_shareable_shaders ? NULL : st; /* Search for existing variant */ @@ -1996,9 +1995,8 @@ st_precompile_shader_variant(struct st_context *st, switch (prog->Target) { case GL_VERTEX_PROGRAM_ARB: { struct st_vertex_program *p = (struct st_vertex_program *)prog; - struct st_vp_variant_key key; + struct st_vp_variant_key key = {0}; - memset(, 0, sizeof(key)); key.st = st->has_shareable_shaders ? NULL : st; st_get_vp_variant(st, p, ); break; @@ -2024,9 +2022,8 @@ st_precompile_shader_variant(struct st_context *st, case GL_FRAGMENT_PROGRAM_ARB: { struct st_fragment_program *p = (struct st_fragment_program *)prog; - struct st_fp_variant_key key; + struct st_fp_variant_key key = {0}; - memset(, 0, sizeof(key)); key.st = st->has_shareable_shaders ? NULL : st; st_get_fp_variant(st, p, ); break; -- 1.8.5.6 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH 3/3] winsys/svga: use new pb_usage_flags enum type
For the series, Reviewed-by: Neha Bhende Regards, Neha From: Brian Paul Sent: Tuesday, March 5, 2019 7:48 PM To: mesa-dev@lists.freedesktop.org Cc: Neha Bhende; Deepak Singh Rawat; Thomas Hellstrom Subject: [PATCH 3/3] winsys/svga: use new pb_usage_flags enum type And add a comment that we're implicitly converting PIPE_TRANSFER_ flags to PB_USAGE_ flags in one place. And statically assert that the enum values match. --- src/gallium/winsys/svga/drm/vmw_buffer.c | 27 +++ src/gallium/winsys/svga/drm/vmw_buffer.h | 1 + src/gallium/winsys/svga/drm/vmw_context.c | 4 ++-- 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/src/gallium/winsys/svga/drm/vmw_buffer.c b/src/gallium/winsys/svga/drm/vmw_buffer.c index 3ac80c7..91b5b25 100644 --- a/src/gallium/winsys/svga/drm/vmw_buffer.c +++ b/src/gallium/winsys/svga/drm/vmw_buffer.c @@ -90,6 +90,11 @@ static inline struct vmw_gmr_bufmgr * vmw_gmr_bufmgr(struct pb_manager *mgr) { assert(mgr); + + /* Make sure our extra flags don't collide with pipebuffer's flags */ + STATIC_ASSERT((VMW_BUFFER_USAGE_SHARED & PB_USAGE_ALL) == 0); + STATIC_ASSERT((VMW_BUFFER_USAGE_SYNC & PB_USAGE_ALL) == 0); + return (struct vmw_gmr_bufmgr *)mgr; } @@ -109,7 +114,7 @@ vmw_gmr_buffer_destroy(struct pb_buffer *_buf) static void * vmw_gmr_buffer_map(struct pb_buffer *_buf, - unsigned flags, + enum pb_usage_flags flags, void *flush_ctx) { struct vmw_gmr_buffer *buf = vmw_gmr_buffer(_buf); @@ -140,7 +145,7 @@ static void vmw_gmr_buffer_unmap(struct pb_buffer *_buf) { struct vmw_gmr_buffer *buf = vmw_gmr_buffer(_buf); - unsigned flags = buf->map_flags; + enum pb_usage_flags flags = buf->map_flags; if ((_buf->usage & VMW_BUFFER_USAGE_SYNC) && !(flags & PB_USAGE_UNSYNCHRONIZED)) { @@ -164,7 +169,7 @@ vmw_gmr_buffer_get_base_buffer(struct pb_buffer *buf, static enum pipe_error vmw_gmr_buffer_validate( struct pb_buffer *_buf, struct pb_validate *vl, - unsigned flags ) + enum pb_usage_flags flags ) { /* Always pinned */ return PIPE_OK; @@ -338,7 +343,7 @@ vmw_svga_winsys_buffer_destroy(struct svga_winsys_screen *sws, void * vmw_svga_winsys_buffer_map(struct svga_winsys_screen *sws, struct svga_winsys_buffer *buf, - unsigned flags) + enum pipe_transfer_usage flags) { void *map; @@ -346,6 +351,20 @@ vmw_svga_winsys_buffer_map(struct svga_winsys_screen *sws, if (flags & PIPE_TRANSFER_UNSYNCHRONIZED) flags &= ~PIPE_TRANSFER_DONTBLOCK; + /* NOTE: we're passing PIPE_TRANSFER_x flags instead of +* PB_USAGE_x flags here. We should probably fix that. +*/ + STATIC_ASSERT((unsigned) PB_USAGE_CPU_READ == + (unsigned) PIPE_TRANSFER_READ); + STATIC_ASSERT((unsigned) PB_USAGE_CPU_WRITE == + (unsigned) PIPE_TRANSFER_WRITE); + STATIC_ASSERT((unsigned) PB_USAGE_GPU_READ == + (unsigned) PIPE_TRANSFER_MAP_DIRECTLY); + STATIC_ASSERT((unsigned) PB_USAGE_DONTBLOCK == + (unsigned) PIPE_TRANSFER_DONTBLOCK); + STATIC_ASSERT((unsigned) PB_USAGE_UNSYNCHRONIZED == + (unsigned) PIPE_TRANSFER_UNSYNCHRONIZED); + map = pb_map(vmw_pb_buffer(buf), flags, NULL); #ifdef DEBUG diff --git a/src/gallium/winsys/svga/drm/vmw_buffer.h b/src/gallium/winsys/svga/drm/vmw_buffer.h index 6e1151e..8ed56d4 100644 --- a/src/gallium/winsys/svga/drm/vmw_buffer.h +++ b/src/gallium/winsys/svga/drm/vmw_buffer.h @@ -33,6 +33,7 @@ #include "util/u_debug_flush.h" +/* These extra flags are used wherever the pb_usage_flags enum type is used */ #define VMW_BUFFER_USAGE_SHARED(1 << 20) #define VMW_BUFFER_USAGE_SYNC (1 << 21) diff --git a/src/gallium/winsys/svga/drm/vmw_context.c b/src/gallium/winsys/svga/drm/vmw_context.c index c0ee833..59963ff 100644 --- a/src/gallium/winsys/svga/drm/vmw_context.c +++ b/src/gallium/winsys/svga/drm/vmw_context.c @@ -161,10 +161,10 @@ vmw_svga_winsys_context(struct svga_winsys_context *swc) } -static inline unsigned +static inline enum pb_usage_flags vmw_translate_to_pb_flags(unsigned flags) { - unsigned f = 0; + enum pb_usage_flags f = 0; if (flags & SVGA_RELOC_READ) f |= PB_USAGE_GPU_READ; -- 1.8.5.6 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH 2/2] svga: silence array out of bounds warning
For the series, Reviewed-by: Neha Bhende Regards, Neha From: Brian Paul Sent: Monday, March 4, 2019 9:20 AM To: mesa-dev@lists.freedesktop.org Cc: Neha Bhende Subject: [PATCH 2/2] svga: silence array out of bounds warning MinGW release build complains about a possible out-of-bounds array access. Test i < 4 to silence it. --- src/gallium/drivers/svga/svga_tgsi_insn.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gallium/drivers/svga/svga_tgsi_insn.c b/src/gallium/drivers/svga/svga_tgsi_insn.c index c7804b2..1392a3c 100644 --- a/src/gallium/drivers/svga/svga_tgsi_insn.c +++ b/src/gallium/drivers/svga/svga_tgsi_insn.c @@ -2951,7 +2951,7 @@ svga_emit_immediate(struct svga_shader_emitter *emit, unsigned i; assert(1 <= imm->Immediate.NrTokens && imm->Immediate.NrTokens <= 5); - for (i = 0; i < imm->Immediate.NrTokens - 1; i++) { + for (i = 0; i < 4 && i < imm->Immediate.NrTokens - 1; i++) { float f = imm->u[i].Float; value[i] = util_is_inf_or_nan(f) ? 0.0f : f; } -- 1.8.5.6 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] st/wgl: init a variable to silence MinGW warning
Reviewed-by: Neha Bhende Regards, Neha From: Brian Paul Sent: Saturday, March 2, 2019 10:28 AM To: mesa-dev@lists.freedesktop.org Cc: Neha Bhende Subject: [PATCH] st/wgl: init a variable to silence MinGW warning MinGW release build says 'value' may be used before being initialized. --- src/gallium/state_trackers/wgl/stw_ext_pixelformat.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gallium/state_trackers/wgl/stw_ext_pixelformat.c b/src/gallium/state_trackers/wgl/stw_ext_pixelformat.c index 6281d5d..7abbb80 100644 --- a/src/gallium/state_trackers/wgl/stw_ext_pixelformat.c +++ b/src/gallium/state_trackers/wgl/stw_ext_pixelformat.c @@ -487,7 +487,7 @@ wglGetPixelFormatAttribfvARB(HDC hdc, int iPixelFormat, int iLayerPlane, (void) hdc; for (i = 0; i < nAttributes; i++) { - int value; + int value = 0; if (!stw_query_attrib(iPixelFormat, iLayerPlane, piAttributes[i], )) -- 1.8.5.6 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [Review Request (master branch)] svga: Fix typo s/VGPU10_MAX_FS_INPUTS/VGPU10_MAX_PS_INPUTS/
This caused vmware driver build failure Fixes: 6010d7b8e8 ("gallium: add PIPE_CAP_MAX_VARYINGS") --- src/gallium/drivers/svga/svga_screen.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gallium/drivers/svga/svga_screen.c b/src/gallium/drivers/svga/svga_screen.c index 6cb5a14..bcb47bb 100644 --- a/src/gallium/drivers/svga/svga_screen.c +++ b/src/gallium/drivers/svga/svga_screen.c @@ -351,7 +351,7 @@ svga_get_param(struct pipe_screen *screen, enum pipe_cap param) case PIPE_CAP_MAX_TEXTURE_GATHER_COMPONENTS: return sws->have_sm4_1 ? 1 : 0; /* only single-channel textures */ case PIPE_CAP_MAX_VARYINGS: - return sws->have_vgpu10 ? VGPU10_MAX_FS_INPUTS : 10; + return sws->have_vgpu10 ? VGPU10_MAX_PS_INPUTS : 10; /* Unsupported features */ case PIPE_CAP_TEXTURE_MIRROR_CLAMP: -- 2.7.4 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] svga: fix dma.pending > 0 test
Looks good. Reviewed-by: Neha Bhende Regards, Neha From: Brian Paul Sent: Monday, February 25, 2019 7:13 PM To: mesa-dev@lists.freedesktop.org Cc: Neha Bhende Subject: [PATCH] svga: fix dma.pending > 0 test The dma.pending field is boolean, so testing for > 0 isn't right. --- src/gallium/drivers/svga/svga_resource_buffer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gallium/drivers/svga/svga_resource_buffer.c b/src/gallium/drivers/svga/svga_resource_buffer.c index e4d12f0..a3e11ad 100644 --- a/src/gallium/drivers/svga/svga_resource_buffer.c +++ b/src/gallium/drivers/svga/svga_resource_buffer.c @@ -117,7 +117,7 @@ svga_buffer_transfer_map(struct pipe_context *pipe, (void) svga_buffer_handle(svga, resource, sbuf->bind_flags); } - if (sbuf->dma.pending > 0) { + if (sbuf->dma.pending) { svga_buffer_upload_flush(svga, sbuf); svga_context_finish(svga); } -- 1.8.5.6 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [Review Request (master branch)] st/mesa: Fix topogun-1.06-orc-84k-resize.trace crash
Thanks Brian and Ilia for the review. Regards, Neha From: Ilia Mirkin Sent: Tuesday, January 29, 2019 1:20:50 PM To: Brian Paul Cc: Neha Bhende; mesa-dev@lists.freedesktop.org Subject: Re: [Review Request (master branch)] st/mesa: Fix topogun-1.06-orc-84k-resize.trace crash Reviewed-by: Ilia Mirkin Note - not sure that initializing pad is necessary. And there's a handful of fields missing (like the draw id comes to mind). But ... it's not important. Sorry again for the screwup! On Tue, Jan 29, 2019 at 4:17 PM Brian Paul wrote: > > LGTM. Reviewed-by: Brian Paul > > I'll push this tomorrow, or after Ilia reviews too. > > > On 01/29/2019 12:21 PM, Neha Bhende wrote: > > We need to initialize all fields in rs->prim explicitly while > > creating new rastpos stage. > > > > Fixes: bac8534267 ("st/mesa: allow glDrawElements to work with GL_SELECT > > feedback") > > > > v2: Initializing all fields in rs->prim as per Ilia. > > > > Reviewed-by: Brian Paul > > --- > > src/mesa/state_tracker/st_cb_rasterpos.c | 4 > > 1 file changed, 4 insertions(+) > > > > diff --git a/src/mesa/state_tracker/st_cb_rasterpos.c > > b/src/mesa/state_tracker/st_cb_rasterpos.c > > index fecaaf7..c54b50d 100644 > > --- a/src/mesa/state_tracker/st_cb_rasterpos.c > > +++ b/src/mesa/state_tracker/st_cb_rasterpos.c > > @@ -208,6 +208,10 @@ new_draw_rastpos_stage(struct gl_context *ctx, struct > > draw_context *draw) > > rs->prim.end = 1; > > rs->prim.start = 0; > > rs->prim.count = 1; > > + rs->prim.pad = 0; > > + rs->prim.num_instances = 1; > > + rs->prim.base_instance = 0; > > + rs->prim.is_indirect = 0; > > > > return rs; > > } > > > ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [Review Request (master branch)] st/mesa: Fix topogun-1.06-orc-84k-resize.trace crash
We need to initialize all fields in rs->prim explicitly while creating new rastpos stage. Fixes: bac8534267 ("st/mesa: allow glDrawElements to work with GL_SELECT feedback") v2: Initializing all fields in rs->prim as per Ilia. Reviewed-by: Brian Paul --- src/mesa/state_tracker/st_cb_rasterpos.c | 4 1 file changed, 4 insertions(+) diff --git a/src/mesa/state_tracker/st_cb_rasterpos.c b/src/mesa/state_tracker/st_cb_rasterpos.c index fecaaf7..c54b50d 100644 --- a/src/mesa/state_tracker/st_cb_rasterpos.c +++ b/src/mesa/state_tracker/st_cb_rasterpos.c @@ -208,6 +208,10 @@ new_draw_rastpos_stage(struct gl_context *ctx, struct draw_context *draw) rs->prim.end = 1; rs->prim.start = 0; rs->prim.count = 1; + rs->prim.pad = 0; + rs->prim.num_instances = 1; + rs->prim.base_instance = 0; + rs->prim.is_indirect = 0; return rs; } -- 2.7.4 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [Review Request (master branch)] st/mesa: Fix topogun-1.06-orc-84k-resize.trace crash
> Would it be wise to just initialize everything explicitly? For example > this is what _mesa_draw_arrays does: > >memset(, 0, sizeof(prim)); >prim.begin = 1; >prim.end = 1; >prim.mode = mode; >prim.num_instances = numInstances; >prim.base_instance = baseInstance; >prim.draw_id = drawID; >prim.is_indirect = 0; >prim.start = start; >prim.count = count; > > and vbo_exec_Begin has: > >exec->vtx.prim[i].mode = mode; >exec->vtx.prim[i].begin = 1; >exec->vtx.prim[i].end = 0; >exec->vtx.prim[i].indexed = 0; >exec->vtx.prim[i].pad = 0; >exec->vtx.prim[i].start = exec->vtx.vert_count; >exec->vtx.prim[i].count = 0; >exec->vtx.prim[i].num_instances = 1; >exec->vtx.prim[i].base_instance = 0; >exec->vtx.prim[i].is_indirect = 0; > > I do think that your change is all that's strictly needed though. > Sorry about the breakage! I think you are right, we should initialize all fields explicitly here. I will send out patch for this and also modify commit message as per suggested by Brian. Regards, Neha From: Ilia Mirkin Sent: Tuesday, January 29, 2019 10:58:01 AM To: Neha Bhende Cc: Brian Paul; ML Mesa-dev Subject: Re: [Mesa-dev] [Review Request (master branch)] st/mesa: Fix topogun-1.06-orc-84k-resize.trace crash Would it be wise to just initialize everything explicitly? For example this is what _mesa_draw_arrays does: memset(, 0, sizeof(prim)); prim.begin = 1; prim.end = 1; prim.mode = mode; prim.num_instances = numInstances; prim.base_instance = baseInstance; prim.draw_id = drawID; prim.is_indirect = 0; prim.start = start; prim.count = count; and vbo_exec_Begin has: exec->vtx.prim[i].mode = mode; exec->vtx.prim[i].begin = 1; exec->vtx.prim[i].end = 0; exec->vtx.prim[i].indexed = 0; exec->vtx.prim[i].pad = 0; exec->vtx.prim[i].start = exec->vtx.vert_count; exec->vtx.prim[i].count = 0; exec->vtx.prim[i].num_instances = 1; exec->vtx.prim[i].base_instance = 0; exec->vtx.prim[i].is_indirect = 0; I do think that your change is all that's strictly needed though. Sorry about the breakage! On Tue, Jan 29, 2019 at 1:31 PM Neha Bhende wrote: > > This patch fixes regression caused by > bac8534267- st/mesa: allow glDrawElements to work with GL_SELECT feedback > We also need to set instance count while creating new rastpos stage. > > Reviewed-by: Brian Paul > --- > src/mesa/state_tracker/st_cb_rasterpos.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/src/mesa/state_tracker/st_cb_rasterpos.c > b/src/mesa/state_tracker/st_cb_rasterpos.c > index fecaaf7..cca2fba 100644 > --- a/src/mesa/state_tracker/st_cb_rasterpos.c > +++ b/src/mesa/state_tracker/st_cb_rasterpos.c > @@ -206,6 +206,7 @@ new_draw_rastpos_stage(struct gl_context *ctx, struct > draw_context *draw) > rs->prim.indexed = 0; > rs->prim.begin = 1; > rs->prim.end = 1; > + rs->prim.num_instances = 1; > rs->prim.start = 0; > rs->prim.count = 1; > > -- > 2.7.4 > > ___ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Fmesa-devdata=02%7C01%7Cbhenden%40vmware.com%7Ca611d0289a334ee9273708d6861bb82d%7Cb39138ca3cee4b4aa4d6cd83d9dd62f0%7C0%7C0%7C636843850945848627sdata=03tQMDRMwfagcQPeALU9Ox2txEb0A8ajAxj2CUgtmIk%3Dreserved=0 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [Review Request (master branch)] st/mesa: Fix topogun-1.06-orc-84k-resize.trace crash
This patch fixes regression caused by bac8534267- st/mesa: allow glDrawElements to work with GL_SELECT feedback We also need to set instance count while creating new rastpos stage. Reviewed-by: Brian Paul --- src/mesa/state_tracker/st_cb_rasterpos.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mesa/state_tracker/st_cb_rasterpos.c b/src/mesa/state_tracker/st_cb_rasterpos.c index fecaaf7..cca2fba 100644 --- a/src/mesa/state_tracker/st_cb_rasterpos.c +++ b/src/mesa/state_tracker/st_cb_rasterpos.c @@ -206,6 +206,7 @@ new_draw_rastpos_stage(struct gl_context *ctx, struct draw_context *draw) rs->prim.indexed = 0; rs->prim.begin = 1; rs->prim.end = 1; + rs->prim.num_instances = 1; rs->prim.start = 0; rs->prim.count = 1; -- 2.7.4 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] svga: add new gallium formats to the format conversion table
Looks good Reviewed-by: Neha Bhende Regards, Neha From: Brian Paul Sent: Tuesday, January 22, 2019 11:31:13 AM To: mesa-dev@lists.freedesktop.org Cc: Jose Fonseca; Neha Bhende; Marek Olšák Subject: [PATCH] svga: add new gallium formats to the format conversion table Fixes a static assertion which broke the build. Fixes:3ee240890 "gallium: add SINT formats to have exact counterparts to SNORM formats" --- src/gallium/drivers/svga/svga_format.c | 4 1 file changed, 4 insertions(+) diff --git a/src/gallium/drivers/svga/svga_format.c b/src/gallium/drivers/svga/svga_format.c index cf88e33..d751eb0 100644 --- a/src/gallium/drivers/svga/svga_format.c +++ b/src/gallium/drivers/svga/svga_format.c @@ -371,6 +371,10 @@ static const struct vgpu10_format_entry format_conversion_table[] = { PIPE_FORMAT_X1B5G5R5_UNORM,SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 }, { PIPE_FORMAT_A4B4G4R4_UNORM,SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 }, { PIPE_FORMAT_R8_SRGB, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 }, + { PIPE_FORMAT_A8L8_SINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 }, + { PIPE_FORMAT_G8R8_SINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 }, + { PIPE_FORMAT_A8B8G8R8_SINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 }, + { PIPE_FORMAT_X8B8G8R8_SINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 }, }; -- 1.8.5.6 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] svga: change svga_destroy_shader_variant() to return void
Reviewed-by: Neha Bhende Regards, Neha From: Brian Paul Sent: Tuesday, October 9, 2018 8:06:26 AM To: mesa-dev@lists.freedesktop.org Cc: Charmaine Lee; Neha Bhende Subject: [PATCH] svga: change svga_destroy_shader_variant() to return void svga_destroy_shader_variant() itself flushes and retries the command if there's a failure. So no need for the callers to do it. Other callers of the function were already ignoring the return value. This also fixes a corner-case double-free reported by Coverity (and reported by Dave Airlie). Tested with various OpenGL apps. --- src/gallium/drivers/svga/svga_pipe_fs.c | 7 +-- src/gallium/drivers/svga/svga_pipe_gs.c | 8 +--- src/gallium/drivers/svga/svga_pipe_vs.c | 7 +-- src/gallium/drivers/svga/svga_shader.c | 5 ++--- src/gallium/drivers/svga/svga_shader.h | 2 +- 5 files changed, 6 insertions(+), 23 deletions(-) diff --git a/src/gallium/drivers/svga/svga_pipe_fs.c b/src/gallium/drivers/svga/svga_pipe_fs.c index aadfb1a..52366f0 100644 --- a/src/gallium/drivers/svga/svga_pipe_fs.c +++ b/src/gallium/drivers/svga/svga_pipe_fs.c @@ -108,12 +108,7 @@ svga_delete_fs_state(struct pipe_context *pipe, void *shader) svga->state.hw_draw.fs = NULL; } - ret = svga_destroy_shader_variant(svga, SVGA3D_SHADERTYPE_PS, variant); - if (ret != PIPE_OK) { - svga_context_flush(svga, NULL); - ret = svga_destroy_shader_variant(svga, SVGA3D_SHADERTYPE_PS, variant); - assert(ret == PIPE_OK); - } + svga_destroy_shader_variant(svga, SVGA3D_SHADERTYPE_PS, variant); } FREE((void *)fs->base.tokens); diff --git a/src/gallium/drivers/svga/svga_pipe_gs.c b/src/gallium/drivers/svga/svga_pipe_gs.c index 2fe5477..cee92a0 100644 --- a/src/gallium/drivers/svga/svga_pipe_gs.c +++ b/src/gallium/drivers/svga/svga_pipe_gs.c @@ -120,13 +120,7 @@ svga_delete_gs_state(struct pipe_context *pipe, void *shader) svga->state.hw_draw.gs = NULL; } - ret = svga_destroy_shader_variant(svga, SVGA3D_SHADERTYPE_GS, variant); - if (ret != PIPE_OK) { -svga_context_flush(svga, NULL); -ret = svga_destroy_shader_variant(svga, SVGA3D_SHADERTYPE_GS, - variant); -assert(ret == PIPE_OK); - } + svga_destroy_shader_variant(svga, SVGA3D_SHADERTYPE_GS, variant); } FREE((void *)gs->base.tokens); diff --git a/src/gallium/drivers/svga/svga_pipe_vs.c b/src/gallium/drivers/svga/svga_pipe_vs.c index ba87cb4..3b6d2e9 100644 --- a/src/gallium/drivers/svga/svga_pipe_vs.c +++ b/src/gallium/drivers/svga/svga_pipe_vs.c @@ -199,12 +199,7 @@ svga_delete_vs_state(struct pipe_context *pipe, void *shader) svga->state.hw_draw.vs = NULL; } - ret = svga_destroy_shader_variant(svga, SVGA3D_SHADERTYPE_VS, variant); - if (ret != PIPE_OK) { - svga_context_flush(svga, NULL); - ret = svga_destroy_shader_variant(svga, SVGA3D_SHADERTYPE_VS, variant); - assert(ret == PIPE_OK); - } + svga_destroy_shader_variant(svga, SVGA3D_SHADERTYPE_VS, variant); } FREE((void *)vs->base.tokens); diff --git a/src/gallium/drivers/svga/svga_shader.c b/src/gallium/drivers/svga/svga_shader.c index 7a0bb3d..22e4498 100644 --- a/src/gallium/drivers/svga/svga_shader.c +++ b/src/gallium/drivers/svga/svga_shader.c @@ -541,7 +541,7 @@ svga_new_shader_variant(struct svga_context *svga) } -enum pipe_error +void svga_destroy_shader_variant(struct svga_context *svga, SVGA3dShaderType type, struct svga_shader_variant *variant) @@ -557,6 +557,7 @@ svga_destroy_shader_variant(struct svga_context *svga, /* flush and try again */ svga_context_flush(svga, NULL); ret = SVGA3D_vgpu10_DestroyShader(svga->swc, variant->id); +assert(ret == PIPE_OK); } util_bitmask_clear(svga->shader_id_bm, variant->id); } @@ -583,8 +584,6 @@ svga_destroy_shader_variant(struct svga_context *svga, FREE(variant); svga->hud.num_shaders--; - - return ret; } /* diff --git a/src/gallium/drivers/svga/svga_shader.h b/src/gallium/drivers/svga/svga_shader.h index b80cf18..68991e7 100644 --- a/src/gallium/drivers/svga/svga_shader.h +++ b/src/gallium/drivers/svga/svga_shader.h @@ -285,7 +285,7 @@ svga_set_shader(struct svga_context *svga, struct svga_shader_variant * svga_new_shader_variant(struct svga_context *svga); -enum pipe_error +void svga_destroy_shader_variant(struct svga_context *svga, SVGA3dShaderType type, struct svga_shader_variant *variant); -- 2.7.4 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH 2/2] swrast: fix crash in AA line code when there's no texture
Looks good. For series, Reviewed-by: Neha Bhende Regards, Neha From: Brian Paul Sent: Friday, July 27, 2018 12:07:50 PM To: mesa-dev@lists.freedesktop.org Cc: Charmaine Lee; Neha Bhende Subject: [PATCH 2/2] swrast: fix crash in AA line code when there's no texture Fixes a crash running the Piglit polygon-mode-facing test (and probably others). --- src/mesa/swrast/s_aalinetemp.h | 10 ++ 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/mesa/swrast/s_aalinetemp.h b/src/mesa/swrast/s_aalinetemp.h index bebb131..64767a3 100644 --- a/src/mesa/swrast/s_aalinetemp.h +++ b/src/mesa/swrast/s_aalinetemp.h @@ -179,10 +179,12 @@ NAME(line)(struct gl_context *ctx, const SWvertex *v0, const SWvertex *v1) if (attr >= VARYING_SLOT_TEX0 && attr < VARYING_SLOT_VAR0) { const GLuint u = attr - VARYING_SLOT_TEX0; const struct gl_texture_object *obj = ctx->Texture.Unit[u]._Current; -const struct gl_texture_image *texImage = - _mesa_base_tex_image(obj); -line.texWidth[attr] = (GLfloat) texImage->Width; -line.texHeight[attr] = (GLfloat) texImage->Height; +if (obj) { + const struct gl_texture_image *texImage = + _mesa_base_tex_image(obj); + line.texWidth[attr] = (GLfloat) texImage->Width; + line.texHeight[attr] = (GLfloat) texImage->Height; +} } ATTRIB_LOOP_END } -- 2.7.4 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] st/wgl: check for NULL piAttribList in wglCreatePbufferARB()
Looks good to me. Reviewed-by: Neha Bhende Regards, Neha From: Charmaine Lee Sent: Friday, July 6, 2018 4:09:02 PM To: mesa-dev@lists.freedesktop.org Cc: Brian Paul; Neha Bhende; Charmaine Lee Subject: [PATCH] st/wgl: check for NULL piAttribList in wglCreatePbufferARB() Java2d opengl pipeline passes NULL piAttribList to wglCreatePbufferARB(). So skip parsing the attribute list if it is NULL. --- src/gallium/state_trackers/wgl/stw_ext_pbuffer.c | 80 1 file changed, 41 insertions(+), 39 deletions(-) diff --git a/src/gallium/state_trackers/wgl/stw_ext_pbuffer.c b/src/gallium/state_trackers/wgl/stw_ext_pbuffer.c index d709faa..02ccb76 100644 --- a/src/gallium/state_trackers/wgl/stw_ext_pbuffer.c +++ b/src/gallium/state_trackers/wgl/stw_ext_pbuffer.c @@ -101,45 +101,47 @@ wglCreatePbufferARB(HDC hCurrentDC, return 0; } - for (piAttrib = piAttribList; *piAttrib; piAttrib++) { - switch (*piAttrib) { - case WGL_PBUFFER_LARGEST_ARB: - piAttrib++; - useLargest = *piAttrib; - break; - case WGL_TEXTURE_FORMAT_ARB: - /* WGL_ARB_render_texture */ - piAttrib++; - textureFormat = *piAttrib; - if (textureFormat != WGL_TEXTURE_RGB_ARB && - textureFormat != WGL_TEXTURE_RGBA_ARB && - textureFormat != WGL_NO_TEXTURE_ARB) { - SetLastError(ERROR_INVALID_DATA); - return 0; - } - break; - case WGL_TEXTURE_TARGET_ARB: - /* WGL_ARB_render_texture */ - piAttrib++; - textureTarget = *piAttrib; - if (textureTarget != WGL_TEXTURE_CUBE_MAP_ARB && - textureTarget != WGL_TEXTURE_1D_ARB && - textureTarget != WGL_TEXTURE_2D_ARB && - textureTarget != WGL_NO_TEXTURE_ARB) { - SetLastError(ERROR_INVALID_DATA); - return 0; - } - break; - case WGL_MIPMAP_TEXTURE_ARB: - /* WGL_ARB_render_texture */ - piAttrib++; - textureMipmap = !!*piAttrib; - break; - default: - SetLastError(ERROR_INVALID_DATA); - debug_printf("wgl: Unsupported attribute 0x%x in %s\n", - *piAttrib, __func__); - return 0; + if (piAttribList) { + for (piAttrib = piAttribList; *piAttrib; piAttrib++) { + switch (*piAttrib) { + case WGL_PBUFFER_LARGEST_ARB: +piAttrib++; +useLargest = *piAttrib; +break; + case WGL_TEXTURE_FORMAT_ARB: + /* WGL_ARB_render_texture */ + piAttrib++; + textureFormat = *piAttrib; + if (textureFormat != WGL_TEXTURE_RGB_ARB && +textureFormat != WGL_TEXTURE_RGBA_ARB && +textureFormat != WGL_NO_TEXTURE_ARB) { +SetLastError(ERROR_INVALID_DATA); +return 0; + } + break; + case WGL_TEXTURE_TARGET_ARB: + /* WGL_ARB_render_texture */ + piAttrib++; + textureTarget = *piAttrib; + if (textureTarget != WGL_TEXTURE_CUBE_MAP_ARB && + textureTarget != WGL_TEXTURE_1D_ARB && + textureTarget != WGL_TEXTURE_2D_ARB && + textureTarget != WGL_NO_TEXTURE_ARB) { +SetLastError(ERROR_INVALID_DATA); +return 0; + } + break; + case WGL_MIPMAP_TEXTURE_ARB: +/* WGL_ARB_render_texture */ +piAttrib++; +textureMipmap = !!*piAttrib; +break; + default: +SetLastError(ERROR_INVALID_DATA); +debug_printf("wgl: Unsupported attribute 0x%x in %s\n", + *piAttrib, __func__); +return 0; + } } } -- 1.9.1 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] tgsi: fix incorrect tgsi_shader_info::num_tokens computation
Reviewed-by: Neha Bhende<bhen...@vmware.com> Regards, Neha From: Brian Paul <bri...@vmware.com> Sent: Thursday, May 17, 2018 1:06:26 PM To: mesa-dev@lists.freedesktop.org Cc: Charmaine Lee; Neha Bhende; Roland Scheidegger Subject: [PATCH] tgsi: fix incorrect tgsi_shader_info::num_tokens computation We were incrementing num_tokens in each loop iteration while parsing the shader. But each call to tgsi_parse_token() can consume more than one token (and often does). Instead, just call the tgsi_num_tokens() function. Luckily, this issue doesn't seem to effect any current users of this field (llvmpipe just checks for <= 1, for example). --- src/gallium/auxiliary/tgsi/tgsi_scan.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/gallium/auxiliary/tgsi/tgsi_scan.c b/src/gallium/auxiliary/tgsi/tgsi_scan.c index 18488d7..685a413 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_scan.c +++ b/src/gallium/auxiliary/tgsi/tgsi_scan.c @@ -836,13 +836,12 @@ tgsi_scan_shader(const struct tgsi_token *tokens, procType == PIPE_SHADER_TESS_EVAL || procType == PIPE_SHADER_COMPUTE); info->processor = procType; + info->num_tokens = tgsi_num_tokens(parse.Tokens); /** ** Loop over incoming program tokens/instructions */ while (!tgsi_parse_end_of_tokens()) { - info->num_tokens++; - tgsi_parse_token( ); switch( parse.FullToken.Token.Type ) { -- 2.7.4 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH 3/3] glsl: #undef THIS macro to fix MSVC build
For the series, Reviewed-by: Neha Bhende<bhen...@vmware.com> Regards, Neha From: Brian Paul <bri...@vmware.com> Sent: Friday, April 13, 2018 9:03:41 AM To: mesa-dev@lists.freedesktop.org Cc: Charmaine Lee; Neha Bhende Subject: [PATCH 3/3] glsl: #undef THIS macro to fix MSVC build THIS is a macro in one of the MSVC header files. It's also a token in the GLSL lexer. This causes a compilation failure with MSVC. This issue seems to be newly exposed after the recent mtypes.h removal patches. --- src/compiler/glsl/glsl_parser_extras.h | 5 + 1 file changed, 5 insertions(+) diff --git a/src/compiler/glsl/glsl_parser_extras.h b/src/compiler/glsl/glsl_parser_extras.h index 66bd1a3..5b9b6cc 100644 --- a/src/compiler/glsl/glsl_parser_extras.h +++ b/src/compiler/glsl/glsl_parser_extras.h @@ -33,6 +33,11 @@ #include #include "glsl_symbol_table.h" +/* THIS is a macro defined somewhere deep in the Windows MSVC header files. + * Undefine it here to avoid collision with the lexer's THIS token. + */ +#undef THIS + struct gl_context; struct glsl_switch_state { -- 2.7.4 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] nir: s/uint/unsigned/ to fix MSVC/MinGW build
Reviewed-by: Neha Bhende<bhen...@vmware.com> From: Brian Paul <bri...@vmware.com> Sent: Thursday, March 29, 2018 9:02:45 PM To: mesa-dev@lists.freedesktop.org Cc: Neha Bhende; Charmaine Lee Subject: [PATCH] nir: s/uint/unsigned/ to fix MSVC/MinGW build --- src/compiler/glsl/glsl_to_nir.cpp | 2 +- src/compiler/nir/nir_gather_info.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/compiler/glsl/glsl_to_nir.cpp b/src/compiler/glsl/glsl_to_nir.cpp index c4a6d52..dbb58d8 100644 --- a/src/compiler/glsl/glsl_to_nir.cpp +++ b/src/compiler/glsl/glsl_to_nir.cpp @@ -369,7 +369,7 @@ nir_visitor::visit(ir_variable *ir) /* Mark all the locations that require two slots */ if (shader->info.stage == MESA_SHADER_VERTEX && glsl_type_is_dual_slot(glsl_without_array(var->type))) { - for (uint i = 0; i < glsl_count_attribute_slots(var->type, true); i++) { + for (unsigned i = 0; i < glsl_count_attribute_slots(var->type, true); i++) { uint64_t bitfield = BITFIELD64_BIT(var->data.location + i); shader->info.vs.double_inputs |= bitfield; } diff --git a/src/compiler/nir/nir_gather_info.c b/src/compiler/nir/nir_gather_info.c index 743f968..5530009 100644 --- a/src/compiler/nir/nir_gather_info.c +++ b/src/compiler/nir/nir_gather_info.c @@ -250,7 +250,7 @@ gather_intrinsic_info(nir_intrinsic_instr *instr, nir_shader *shader) if (shader->info.stage == MESA_SHADER_VERTEX && var->data.mode == nir_var_shader_in && glsl_type_is_dual_slot(glsl_without_array(var->type))) { -for (uint i = 0; i < glsl_count_attribute_slots(var->type, false); i++) { +for (unsigned i = 0; i < glsl_count_attribute_slots(var->type, false); i++) { int idx = var->data.location + i; shader->info.vs.double_inputs |= BITFIELD64_BIT(idx); } -- 2.7.4 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH 2/2] svga: simplify uses_flat_interp expression in emit_input_declarations()
For the series, Reviewed-by: Neha Bhende<bhen...@vmware.com> Regards, Neha From: Brian Paul <bri...@vmware.com> Sent: Thursday, March 22, 2018 8:28:52 AM To: mesa-dev@lists.freedesktop.org Cc: Neha Bhende; Charmaine Lee Subject: [PATCH 2/2] svga: simplify uses_flat_interp expression in emit_input_declarations() --- src/gallium/drivers/svga/svga_tgsi_vgpu10.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gallium/drivers/svga/svga_tgsi_vgpu10.c b/src/gallium/drivers/svga/svga_tgsi_vgpu10.c index 04d8303..4292894 100644 --- a/src/gallium/drivers/svga/svga_tgsi_vgpu10.c +++ b/src/gallium/drivers/svga/svga_tgsi_vgpu10.c @@ -2396,7 +2396,7 @@ emit_input_declarations(struct svga_shader_emitter_v10 *emit) emit->info.input_interpolate_loc[i]); /* keeps track if flat interpolation mode is being used */ -emit->uses_flat_interp = emit->uses_flat_interp || +emit->uses_flat_interp |= (interpolationMode == VGPU10_INTERPOLATION_CONSTANT); name = VGPU10_NAME_UNDEFINED; -- 2.7.4 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH 3/3] st/mesa: s/unsigned/enum pipe_shader_type/ for st_bind_ubos()
For the series, Reviewed-by: Neha Bhende<bhen...@vmware.com> Regards, Neha From: Brian Paul <bri...@vmware.com> Sent: Thursday, March 22, 2018 8:29:16 AM To: mesa-dev@lists.freedesktop.org Cc: Neha Bhende; Charmaine Lee Subject: [PATCH 3/3] st/mesa: s/unsigned/enum pipe_shader_type/ for st_bind_ubos() --- src/mesa/state_tracker/st_atom_constbuf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mesa/state_tracker/st_atom_constbuf.c b/src/mesa/state_tracker/st_atom_constbuf.c index 0c094dc..6455e61 100644 --- a/src/mesa/state_tracker/st_atom_constbuf.c +++ b/src/mesa/state_tracker/st_atom_constbuf.c @@ -196,7 +196,7 @@ st_update_cs_constants(struct st_context *st) static void st_bind_ubos(struct st_context *st, struct gl_program *prog, - unsigned shader_type) + enum pipe_shader_type shader_type) { unsigned i; struct pipe_constant_buffer cb = { 0 }; -- 2.7.4 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] svga: s/unsigned/enum pipe_shader_type/
Looks good. Reviewed-by: Neha Bhende<bhen...@vmware.com> Regards, Neha From: Brian Paul <bri...@vmware.com> Sent: Wednesday, February 14, 2018 1:53:52 PM To: mesa-dev@lists.freedesktop.org Cc: Charmaine Lee; Neha Bhende Subject: [PATCH] svga: s/unsigned/enum pipe_shader_type/ --- src/gallium/drivers/svga/svga_tgsi.c| 3 ++- src/gallium/drivers/svga/svga_tgsi.h| 5 +++-- src/gallium/drivers/svga/svga_tgsi_vgpu10.c | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/gallium/drivers/svga/svga_tgsi.c b/src/gallium/drivers/svga/svga_tgsi.c index 0b2d8af..8819313 100644 --- a/src/gallium/drivers/svga/svga_tgsi.c +++ b/src/gallium/drivers/svga/svga_tgsi.c @@ -168,7 +168,8 @@ svga_shader_emit_header(struct svga_shader_emitter *emit) struct svga_shader_variant * svga_tgsi_vgpu9_translate(struct svga_context *svga, const struct svga_shader *shader, - const struct svga_compile_key *key, unsigned unit) + const struct svga_compile_key *key, + enum pipe_shader_type unit) { struct svga_shader_variant *variant = NULL; struct svga_shader_emitter emit; diff --git a/src/gallium/drivers/svga/svga_tgsi.h b/src/gallium/drivers/svga/svga_tgsi.h index 2581135..e986011 100644 --- a/src/gallium/drivers/svga/svga_tgsi.h +++ b/src/gallium/drivers/svga/svga_tgsi.h @@ -65,13 +65,14 @@ static inline void svga_generate_vdecl_semantics( unsigned idx, struct svga_shader_variant * svga_tgsi_vgpu9_translate(struct svga_context *svga, const struct svga_shader *shader, - const struct svga_compile_key *key, unsigned unit); + const struct svga_compile_key *key, + enum pipe_shader_type unit); struct svga_shader_variant * svga_tgsi_vgpu10_translate(struct svga_context *svga, const struct svga_shader *shader, const struct svga_compile_key *key, - unsigned unit); + enum pipe_shader_type unit); boolean svga_shader_verify(const uint32_t *tokens, unsigned nr_tokens); diff --git a/src/gallium/drivers/svga/svga_tgsi_vgpu10.c b/src/gallium/drivers/svga/svga_tgsi_vgpu10.c index 73aa78b..4d0834b 100644 --- a/src/gallium/drivers/svga/svga_tgsi_vgpu10.c +++ b/src/gallium/drivers/svga/svga_tgsi_vgpu10.c @@ -6484,7 +6484,7 @@ struct svga_shader_variant * svga_tgsi_vgpu10_translate(struct svga_context *svga, const struct svga_shader *shader, const struct svga_compile_key *key, - unsigned unit) + enum pipe_shader_type unit) { struct svga_shader_variant *variant = NULL; struct svga_shader_emitter_v10 *emit; -- 2.7.4 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH 4/4] svga: remove unneeded #includes in svga_pipe_draw.c
For the series, Reviewed-by: Neha Bhende<bhen...@vmware.com> From: Brian Paul <bri...@vmware.com> Sent: Wednesday, January 31, 2018 7:37:23 PM To: mesa-dev@lists.freedesktop.org Cc: Charmaine Lee; Neha Bhende Subject: [PATCH 4/4] svga: remove unneeded #includes in svga_pipe_draw.c --- src/gallium/drivers/svga/svga_pipe_draw.c | 7 --- 1 file changed, 7 deletions(-) diff --git a/src/gallium/drivers/svga/svga_pipe_draw.c b/src/gallium/drivers/svga/svga_pipe_draw.c index 8cd7ab0..ee4a105 100644 --- a/src/gallium/drivers/svga/svga_pipe_draw.c +++ b/src/gallium/drivers/svga/svga_pipe_draw.c @@ -24,21 +24,14 @@ **/ -#include "util/u_format.h" #include "util/u_helpers.h" #include "util/u_inlines.h" #include "util/u_prim.h" #include "util/u_prim_restart.h" -#include "util/u_upload_mgr.h" -#include "indices/u_indices.h" -#include "svga_hw_reg.h" -#include "svga_cmd.h" #include "svga_context.h" -#include "svga_screen.h" #include "svga_draw.h" #include "svga_shader.h" -#include "svga_state.h" #include "svga_surface.h" #include "svga_swtnl.h" #include "svga_debug.h" -- 2.7.4 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH 3/3] mesa: remove MESA_FUNCTION
For series, Reviewed-by: Neha Bhende<bhen...@vmware.com> Regards, Neha From: Brian Paul <bri...@vmware.com> Sent: Friday, January 26, 2018 8:39:18 AM To: mesa-dev@lists.freedesktop.org Cc: Charmaine Lee; Neha Bhende Subject: [PATCH 3/3] mesa: remove MESA_FUNCTION Just use __func__ in the two macros where it was used. --- src/mesa/main/context.h | 4 ++-- src/mesa/main/mtypes.h | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/mesa/main/context.h b/src/mesa/main/context.h index 5d9e2ed..86be66f 100644 --- a/src/mesa/main/context.h +++ b/src/mesa/main/context.h @@ -206,7 +206,7 @@ _mesa_inside_dlist_begin_end(const struct gl_context *ctx) #define FLUSH_VERTICES(ctx, newstate) \ do {\ if (MESA_VERBOSE & VERBOSE_STATE) \ - _mesa_debug(ctx, "FLUSH_VERTICES in %s\n", MESA_FUNCTION);\ + _mesa_debug(ctx, "FLUSH_VERTICES in %s\n", __func__);\ if (ctx->Driver.NeedFlush & FLUSH_STORED_VERTICES) \ vbo_exec_FlushVertices(ctx, FLUSH_STORED_VERTICES); \ ctx->NewState |= newstate; \ @@ -225,7 +225,7 @@ do { \ #define FLUSH_CURRENT(ctx, newstate)\ do {\ if (MESA_VERBOSE & VERBOSE_STATE) \ - _mesa_debug(ctx, "FLUSH_CURRENT in %s\n", MESA_FUNCTION);\ + _mesa_debug(ctx, "FLUSH_CURRENT in %s\n", __func__); \ if (ctx->Driver.NeedFlush & FLUSH_UPDATE_CURRENT) \ vbo_exec_FlushVertices(ctx, FLUSH_UPDATE_CURRENT); \ ctx->NewState |= newstate; \ diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 54159bb..9cd32c3 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -5105,11 +5105,9 @@ struct gl_memory_info #ifdef DEBUG extern int MESA_VERBOSE; extern int MESA_DEBUG_FLAGS; -# define MESA_FUNCTION __func__ #else # define MESA_VERBOSE 0 # define MESA_DEBUG_FLAGS 0 -# define MESA_FUNCTION "a function" #endif -- 2.7.4 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] mesa: silence MinGW 'may be unused uninitialized' warning in get.c
Reviewed-by: Neha Bhende<bhen...@vmware.com> Regards, Neha From: Brian Paul <bri...@vmware.com> Sent: Thursday, January 25, 2018 4:29:05 PM To: mesa-dev@lists.freedesktop.org Cc: Charmaine Lee; Neha Bhende Subject: [PATCH] mesa: silence MinGW 'may be unused uninitialized' warning in get.c The warning happens on line 2114 for the memcpy(data, p, size) call. I'm not sure why that generates the warning but not the earlier use of p in the code. --- src/mesa/main/get.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c index 7f2d72a..5fee9a6 100644 --- a/src/mesa/main/get.c +++ b/src/mesa/main/get.c @@ -2051,7 +2051,7 @@ _mesa_GetUnsignedBytevEXT(GLenum pname, GLubyte *data) const struct value_desc *d; union value v; int shift; - void *p; + void *p = NULL; GLsizei size; const char *func = "glGetUnsignedBytevEXT"; -- 2.7.4 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH 3/3] mesa: whitespace fixes in varray.h
Looks good. For the series, Reviewed-by: Neha Bhende<bhen...@vmware.com> Regards, Neha From: Brian Paul <bri...@vmware.com> Sent: Thursday, January 25, 2018 8:48:00 AM To: mesa-dev@lists.freedesktop.org Cc: Neha Bhende; Charmaine Lee; Roland Scheidegger Subject: [PATCH 3/3] mesa: whitespace fixes in varray.h --- src/mesa/main/varray.h | 55 ++ 1 file changed, 29 insertions(+), 26 deletions(-) diff --git a/src/mesa/main/varray.h b/src/mesa/main/varray.h index 03d81d0..93f2f47 100644 --- a/src/mesa/main/varray.h +++ b/src/mesa/main/varray.h @@ -44,9 +44,10 @@ _mesa_vertex_attrib_address(const struct gl_array_attributes *array, if (_mesa_is_bufferobj(binding->BufferObj)) return (const GLubyte *) (binding->Offset + array->RelativeOffset); else - return array->Ptr; + return array->Ptr; } + /** * Sets the fields in a gl_vertex_array to values derived from a * gl_array_attributes and a gl_vertex_buffer_binding. @@ -70,6 +71,7 @@ _mesa_update_client_array(struct gl_context *ctx, _mesa_reference_buffer_object(ctx, >BufferObj, binding->BufferObj); } + static inline bool _mesa_attr_zero_aliases_vertex(const struct gl_context *ctx) { @@ -190,7 +192,7 @@ _mesa_SecondaryColorPointer_no_error(GLint size, GLenum type, GLsizei stride, const GLvoid *ptr); extern void GLAPIENTRY _mesa_SecondaryColorPointer(GLint size, GLenum type, - GLsizei stride, const GLvoid *ptr); +GLsizei stride, const GLvoid *ptr); extern void GLAPIENTRY @@ -206,8 +208,8 @@ _mesa_VertexAttribPointer_no_error(GLuint index, GLint size, GLenum type, const GLvoid *pointer); extern void GLAPIENTRY _mesa_VertexAttribPointer(GLuint index, GLint size, GLenum type, - GLboolean normalized, GLsizei stride, - const GLvoid *pointer); + GLboolean normalized, GLsizei stride, + const GLvoid *pointer); void GLAPIENTRY _mesa_VertexAttribIPointer_no_error(GLuint index, GLint size, GLenum type, @@ -295,35 +297,35 @@ _mesa_InterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer); extern void GLAPIENTRY -_mesa_MultiDrawArrays( GLenum mode, const GLint *first, - const GLsizei *count, GLsizei primcount ); +_mesa_MultiDrawArrays(GLenum mode, const GLint *first, + const GLsizei *count, GLsizei primcount); extern void GLAPIENTRY -_mesa_MultiDrawElementsEXT( GLenum mode, const GLsizei *count, GLenum type, -const GLvoid **indices, GLsizei primcount ); +_mesa_MultiDrawElementsEXT(GLenum mode, const GLsizei *count, GLenum type, + const GLvoid **indices, GLsizei primcount); extern void GLAPIENTRY -_mesa_MultiDrawElementsBaseVertex( GLenum mode, - const GLsizei *count, GLenum type, - const GLvoid **indices, GLsizei primcount, - const GLint *basevertex); +_mesa_MultiDrawElementsBaseVertex(GLenum mode, + const GLsizei *count, GLenum type, + const GLvoid **indices, GLsizei primcount, + const GLint *basevertex); extern void GLAPIENTRY -_mesa_MultiModeDrawArraysIBM( const GLenum * mode, const GLint * first, - const GLsizei * count, - GLsizei primcount, GLint modestride ); +_mesa_MultiModeDrawArraysIBM(const GLenum * mode, const GLint * first, + const GLsizei * count, + GLsizei primcount, GLint modestride ); extern void GLAPIENTRY -_mesa_MultiModeDrawElementsIBM( const GLenum * mode, const GLsizei * count, - GLenum type, const GLvoid * const * indices, - GLsizei primcount, GLint modestride ); +_mesa_MultiModeDrawElementsIBM(const GLenum * mode, const GLsizei * count, + GLenum type, const GLvoid * const * indices, + GLsizei primcount, GLint modestride ); extern void GLAPIENTRY _mesa_LockArraysEXT(GLint first, GLsizei count); extern void GLAPIENTRY -_mesa_UnlockArraysEXT( void ); +_mesa_UnlockArraysEXT(void); extern void GLAPIENTRY @@ -343,13 +345,13 @@ _mesa_DrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, extern void GLAPIENTRY _mesa_DrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, -const GLvoid *indices, GLint basevertex); + const GLvoid *indices, GLint basevertex); extern void GLAPIENTRY _mesa_DrawRangeElementsBaseVertex(GLen
Re: [Mesa-dev] [PATCH] svga: add num-commands-per-draw HUD query
Looks good. Reviewed-by: Neha Bhende<bhen...@vmware.com> From: Brian Paul <bri...@vmware.com> Sent: Friday, January 12, 2018 2:22:07 PM To: mesa-dev@lists.freedesktop.org Cc: Neha Bhende; Charmaine Lee Subject: [PATCH] svga: add num-commands-per-draw HUD query This query shows the ratio of total commands vs. drawing commands sent to the vgpu device. This gives some idea of how many state changes are sent per draw call. The closer the ratio is to 1.0, the better. --- src/gallium/drivers/svga/svga_cmd.c| 4 src/gallium/drivers/svga/svga_cmd_vgpu10.c | 5 + src/gallium/drivers/svga/svga_context.h| 1 + src/gallium/drivers/svga/svga_pipe_query.c | 8 src/gallium/drivers/svga/svga_screen.c | 2 ++ src/gallium/drivers/svga/svga_winsys.h | 4 6 files changed, 24 insertions(+) diff --git a/src/gallium/drivers/svga/svga_cmd.c b/src/gallium/drivers/svga/svga_cmd.c index 7b78cb7..2bd1cc2 100644 --- a/src/gallium/drivers/svga/svga_cmd.c +++ b/src/gallium/drivers/svga/svga_cmd.c @@ -121,6 +121,8 @@ SVGA3D_FIFOReserve(struct svga_winsys_context *swc, swc->last_command = cmd; + swc->num_commands++; + return [1]; } @@ -1022,6 +1024,8 @@ SVGA3D_BeginDrawPrimitives(struct svga_winsys_context *swc, swc->hints |= SVGA_HINT_FLAG_CAN_PRE_FLUSH; + swc->num_draw_commands++; + return PIPE_OK; } diff --git a/src/gallium/drivers/svga/svga_cmd_vgpu10.c b/src/gallium/drivers/svga/svga_cmd_vgpu10.c index 55465f5..bed1403 100644 --- a/src/gallium/drivers/svga/svga_cmd_vgpu10.c +++ b/src/gallium/drivers/svga/svga_cmd_vgpu10.c @@ -537,6 +537,7 @@ SVGA3D_vgpu10_Draw(struct svga_winsys_context *swc, swc->hints |= SVGA_HINT_FLAG_CAN_PRE_FLUSH; swc->commit(swc); + swc->num_draw_commands++; return PIPE_OK; } @@ -553,6 +554,7 @@ SVGA3D_vgpu10_DrawIndexed(struct svga_winsys_context *swc, swc->hints |= SVGA_HINT_FLAG_CAN_PRE_FLUSH; swc->commit(swc); + swc->num_draw_commands++; return PIPE_OK; } @@ -570,6 +572,7 @@ SVGA3D_vgpu10_DrawInstanced(struct svga_winsys_context *swc, swc->hints |= SVGA_HINT_FLAG_CAN_PRE_FLUSH; swc->commit(swc); + swc->num_draw_commands++; return PIPE_OK; } @@ -590,6 +593,7 @@ SVGA3D_vgpu10_DrawIndexedInstanced(struct svga_winsys_context *swc, swc->hints |= SVGA_HINT_FLAG_CAN_PRE_FLUSH; swc->commit(swc); + swc->num_draw_commands++; return PIPE_OK; } @@ -600,6 +604,7 @@ SVGA3D_vgpu10_DrawAuto(struct svga_winsys_context *swc) swc->hints |= SVGA_HINT_FLAG_CAN_PRE_FLUSH; swc->commit(swc); + swc->num_draw_commands++; return PIPE_OK; } diff --git a/src/gallium/drivers/svga/svga_context.h b/src/gallium/drivers/svga/svga_context.h index fd0c312..bc881c9 100644 --- a/src/gallium/drivers/svga/svga_context.h +++ b/src/gallium/drivers/svga/svga_context.h @@ -73,6 +73,7 @@ enum svga_hud { SVGA_QUERY_NUM_SURFACE_VIEWS, SVGA_QUERY_NUM_GENERATE_MIPMAP, SVGA_QUERY_NUM_FAILED_ALLOCATIONS, + SVGA_QUERY_NUM_COMMANDS_PER_DRAW, /*SVGA_QUERY_MAX has to be last because it is size of an array*/ SVGA_QUERY_MAX diff --git a/src/gallium/drivers/svga/svga_pipe_query.c b/src/gallium/drivers/svga/svga_pipe_query.c index 2692452..cec95ed 100644 --- a/src/gallium/drivers/svga/svga_pipe_query.c +++ b/src/gallium/drivers/svga/svga_pipe_query.c @@ -751,6 +751,7 @@ svga_create_query(struct pipe_context *pipe, case SVGA_QUERY_NUM_CONST_BUF_UPDATES: case SVGA_QUERY_NUM_CONST_UPDATES: case SVGA_QUERY_NUM_FAILED_ALLOCATIONS: + case SVGA_QUERY_NUM_COMMANDS_PER_DRAW: break; case SVGA_QUERY_FLUSH_TIME: case SVGA_QUERY_MAP_BUFFER_TIME: @@ -832,6 +833,7 @@ svga_destroy_query(struct pipe_context *pipe, struct pipe_query *q) case SVGA_QUERY_NUM_CONST_BUF_UPDATES: case SVGA_QUERY_NUM_CONST_UPDATES: case SVGA_QUERY_NUM_FAILED_ALLOCATIONS: + case SVGA_QUERY_NUM_COMMANDS_PER_DRAW: /* nothing */ break; default: @@ -945,6 +947,7 @@ svga_begin_query(struct pipe_context *pipe, struct pipe_query *q) case SVGA_QUERY_NUM_SURFACE_VIEWS: case SVGA_QUERY_NUM_GENERATE_MIPMAP: case SVGA_QUERY_NUM_FAILED_ALLOCATIONS: + case SVGA_QUERY_NUM_COMMANDS_PER_DRAW: /* nothing */ break; default: @@ -1059,6 +1062,7 @@ svga_end_query(struct pipe_context *pipe, struct pipe_query *q) case SVGA_QUERY_NUM_SURFACE_VIEWS: case SVGA_QUERY_NUM_GENERATE_MIPMAP: case SVGA_QUERY_NUM_FAILED_ALLOCATIONS: + case SVGA_QUERY_NUM_COMMANDS_PER_DRAW: /* nothing */ break; default: @@ -1196,6 +1200,10 @@ svga_get_query_result(struct pipe_context *pipe, case SVGA_QUERY_NUM_FAILED_ALLOCATIONS: vresult->u64 = svgascreen->hud.num_failed_allocations; break; + case SVGA_QUERY_NUM_COMMANDS_PER_DRAW: + vresult->f = (float) svga->swc->num_commands + / (float) svga->s
Re: [Mesa-dev] [PATCH] svga: check for null fs pointer in update_samplers()
Looks good. Reviewed-by: Neha Bhende<bhen...@vmware.com> From: Brian Paul <bri...@vmware.com> Sent: Thursday, December 28, 2017 8:19:24 AM To: mesa-dev@lists.freedesktop.org Cc: Charmaine Lee; Neha Bhende Subject: [PATCH] svga: check for null fs pointer in update_samplers() This can happen when there's no active fragment shader, such as when using transform feedback. This wasn't hit by any Piglit test but is hit by Daniel Rákos' Nature demo. VMware bug 2026189. --- src/gallium/drivers/svga/svga_state_sampler.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gallium/drivers/svga/svga_state_sampler.c b/src/gallium/drivers/svga/svga_state_sampler.c index 9bd0d53..11f36e3 100644 --- a/src/gallium/drivers/svga/svga_state_sampler.c +++ b/src/gallium/drivers/svga/svga_state_sampler.c @@ -399,7 +399,7 @@ update_samplers(struct svga_context *svga, unsigned dirty ) * for this texture unit, don't enable shadow compare in * the texture sampler state. */ -if (fs->fs_shadow_compare_units & (1 << i)) { +if (fs && (fs->fs_shadow_compare_units & (1 << i))) { fs_shadow = true; } } -- 1.9.1 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] st/mesa: increase size of glsl_base_type bitfields
Looks good. Reviewed-by : Neha Bhende<bhen...@vmware.com> Regards, Neha From: Brian Paul <bri...@vmware.com> Sent: Wednesday, December 27, 2017 12:38:53 PM To: mesa-dev@lists.freedesktop.org Cc: Charmaine Lee; Neha Bhende Subject: [PATCH] st/mesa: increase size of glsl_base_type bitfields Change 59f458cd8703b97b31b8 added more enums to glsl_base_type. We have to bump up the size of the bitfields for fields of this type for MSVC. Also, add another assertion to catch another place where this enum bitfield is used. --- src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 1 + src/mesa/state_tracker/st_glsl_to_tgsi_private.h | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp index 740c197..ec572f2 100644 --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp @@ -6254,6 +6254,7 @@ st_translate_program( ASSERT_BITFIELD_SIZE(st_src_reg, type, GLSL_TYPE_ERROR); ASSERT_BITFIELD_SIZE(st_dst_reg, type, GLSL_TYPE_ERROR); + ASSERT_BITFIELD_SIZE(glsl_to_tgsi_instruction, tex_type, GLSL_TYPE_ERROR); ASSERT_BITFIELD_SIZE(glsl_to_tgsi_instruction, image_format, PIPE_FORMAT_COUNT); ASSERT_BITFIELD_SIZE(glsl_to_tgsi_instruction, tex_target, (gl_texture_index) (NUM_TEXTURE_TARGETS - 1)); diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi_private.h b/src/mesa/state_tracker/st_glsl_to_tgsi_private.h index 3e51936..b7f535b 100644 --- a/src/mesa/state_tracker/st_glsl_to_tgsi_private.h +++ b/src/mesa/state_tracker/st_glsl_to_tgsi_private.h @@ -60,7 +60,7 @@ public: uint16_t swizzle; /**< SWIZZLE_XYZWONEZERO swizzles from Mesa. */ int negate:4; /**< NEGATE_XYZW mask from mesa */ unsigned abs:1; - enum glsl_base_type type:5; /** GLSL_TYPE_* from GLSL IR (enum glsl_base_type) */ + enum glsl_base_type type:6; /** GLSL_TYPE_* from GLSL IR (enum glsl_base_type) */ unsigned has_index2:1; gl_register_file file:5; /**< PROGRAM_* from Mesa */ /* @@ -100,7 +100,7 @@ public: int16_t index2D; gl_register_file file:5; /**< PROGRAM_* from Mesa */ unsigned writemask:4; /**< Bitfield of WRITEMASK_[XYZW] */ - enum glsl_base_type type:5; /** GLSL_TYPE_* from GLSL IR (enum glsl_base_type) */ + enum glsl_base_type type:6; /** GLSL_TYPE_* from GLSL IR (enum glsl_base_type) */ unsigned has_index2:1; unsigned array_id:10; @@ -128,7 +128,7 @@ public: unsigned sampler_base:5; unsigned sampler_array_size:6; /**< 1-based size of sampler array, 1 if not array */ gl_texture_index tex_target:5; - glsl_base_type tex_type:5; + glsl_base_type tex_type:6; unsigned tex_shadow:1; enum pipe_format image_format:10; unsigned tex_offset_num_offset:3; -- 1.9.1 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH 2/2] svga: fix TGSI_TEXTURE_SHADOW1D coordinate selection
For the series, Reviewed-by: Neha Bhende<bhen...@vmware.com> Regards, Neha From: Brian Paul <bri...@vmware.com> Sent: Saturday, December 23, 2017 9:13 PM To: mesa-dev@lists.freedesktop.org Cc: Charmaine Lee; Neha Bhende Subject: [PATCH 2/2] svga: fix TGSI_TEXTURE_SHADOW1D coordinate selection Fixes about 24 Piglit tex-miplevel-selection tests. --- src/gallium/drivers/svga/svga_tgsi_vgpu10.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/gallium/drivers/svga/svga_tgsi_vgpu10.c b/src/gallium/drivers/svga/svga_tgsi_vgpu10.c index deb8e5a..31149dd 100644 --- a/src/gallium/drivers/svga/svga_tgsi_vgpu10.c +++ b/src/gallium/drivers/svga/svga_tgsi_vgpu10.c @@ -4898,12 +4898,10 @@ end_tex_swizzle(struct svga_shader_emitter_v10 *emit, switch (swz->texture_target) { case TGSI_TEXTURE_SHADOW2D: case TGSI_TEXTURE_SHADOWRECT: + case TGSI_TEXTURE_SHADOW1D: case TGSI_TEXTURE_SHADOW1D_ARRAY: coord_src = scalar_src(swz->coord_src, TGSI_SWIZZLE_Z); break; - case TGSI_TEXTURE_SHADOW1D: - coord_src = scalar_src(swz->coord_src, TGSI_SWIZZLE_Y); - break; case TGSI_TEXTURE_SHADOWCUBE: case TGSI_TEXTURE_SHADOW2D_ARRAY: coord_src = scalar_src(swz->coord_src, TGSI_SWIZZLE_W); -- 1.9.1 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH 2/2] svga: use tgsi_util_get_shadow_ref_src_index() in a couple place
For the series, Reviewed-by: Neha Bhende<bhen...@vmware.com> Regards, Neha From: Brian Paul <bri...@vmware.com> Sent: Sunday, December 24, 2017 2:40:28 PM To: mesa-dev@lists.freedesktop.org Cc: Charmaine Lee; Neha Bhende Subject: [PATCH 2/2] svga: use tgsi_util_get_shadow_ref_src_index() in a couple place No piglit changes. --- src/gallium/drivers/svga/svga_tgsi_vgpu10.c | 29 +++-- 1 file changed, 7 insertions(+), 22 deletions(-) diff --git a/src/gallium/drivers/svga/svga_tgsi_vgpu10.c b/src/gallium/drivers/svga/svga_tgsi_vgpu10.c index 31149dd..3e4a6ed 100644 --- a/src/gallium/drivers/svga/svga_tgsi_vgpu10.c +++ b/src/gallium/drivers/svga/svga_tgsi_vgpu10.c @@ -4782,16 +4782,12 @@ emit_tex_compare_refcoord(struct svga_shader_emitter_v10 *emit, const struct tgsi_full_src_register *coord) { struct tgsi_full_src_register coord_src_ref; - unsigned component; + int component; assert(tgsi_is_shadow_target(target)); - assert(target != TGSI_TEXTURE_SHADOWCUBE_ARRAY); /* XXX not implemented */ - if (target == TGSI_TEXTURE_SHADOW2D_ARRAY || - target == TGSI_TEXTURE_SHADOWCUBE) - component = TGSI_SWIZZLE_W; - else - component = TGSI_SWIZZLE_Z; + component = tgsi_util_get_shadow_ref_src_index(target) % 4; + assert(component >= 0); coord_src_ref = scalar_src(coord, component); @@ -4895,21 +4891,10 @@ end_tex_swizzle(struct svga_shader_emitter_v10 *emit, assert(emit->unit == PIPE_SHADER_FRAGMENT); - switch (swz->texture_target) { - case TGSI_TEXTURE_SHADOW2D: - case TGSI_TEXTURE_SHADOWRECT: - case TGSI_TEXTURE_SHADOW1D: - case TGSI_TEXTURE_SHADOW1D_ARRAY: - coord_src = scalar_src(swz->coord_src, TGSI_SWIZZLE_Z); - break; - case TGSI_TEXTURE_SHADOWCUBE: - case TGSI_TEXTURE_SHADOW2D_ARRAY: - coord_src = scalar_src(swz->coord_src, TGSI_SWIZZLE_W); - break; - default: - assert(!"Unexpected texture target in end_tex_swizzle()"); - coord_src = scalar_src(swz->coord_src, TGSI_SWIZZLE_Z); - } + int component = + tgsi_util_get_shadow_ref_src_index(swz->texture_target) % 4; + assert(component >= 0); + coord_src = scalar_src(swz->coord_src, component); /* COMPARE tmp, coord, texel */ emit_comparison(emit, compare_func, -- 1.9.1 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] svga: issue debug warning for unsupported two-sided stencil state
Looks good to me. Reviewed-by: Neha Bhende <bhen...@vmware.com> Regards, Neha From: mesa-dev <mesa-dev-boun...@lists.freedesktop.org> on behalf of Brian Paul <bri...@vmware.com> Sent: Friday, November 10, 2017 6:40:26 PM To: mesa-dev@lists.freedesktop.org Subject: [Mesa-dev] [PATCH] svga: issue debug warning for unsupported two-sided stencil state We only have a single stencil read mask and write mask. Issue a warning if different front/back values are used. The Piglit gl-2.0-two-sided-stencil test hits this. --- src/gallium/drivers/svga/svga_pipe_depthstencil.c | 15 +++ 1 file changed, 15 insertions(+) diff --git a/src/gallium/drivers/svga/svga_pipe_depthstencil.c b/src/gallium/drivers/svga/svga_pipe_depthstencil.c index 1b62290..e5caa4b 100644 --- a/src/gallium/drivers/svga/svga_pipe_depthstencil.c +++ b/src/gallium/drivers/svga/svga_pipe_depthstencil.c @@ -172,6 +172,21 @@ svga_create_depth_stencil_state(struct pipe_context *pipe, ds->stencil_mask = templ->stencil[1].valuemask & 0xff; ds->stencil_writemask = templ->stencil[1].writemask & 0xff; + + if (templ->stencil[1].valuemask != templ->stencil[0].valuemask) { + pipe_debug_message(>debug.callback, CONFORMANCE, +"two-sided stencil mask not supported " +"(front=0x%x, back=0x%x)", +templ->stencil[0].valuemask, +templ->stencil[1].valuemask); + } + if (templ->stencil[1].writemask != templ->stencil[0].writemask) { + pipe_debug_message(>debug.callback, CONFORMANCE, +"two-sided stencil writemask not supported " +"(front=0x%x, back=0x%x)", +templ->stencil[0].writemask, +templ->stencil[1].writemask); + } } else { /* back face state is same as front-face state */ -- 1.9.1 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.freedesktop.org_mailman_listinfo_mesa-2Ddev=DwIGaQ=uilaK90D4TOVoH58JNXRgQ=U9C05uEFArICiTQ6FqFIgVCB-YGE5G2JTThVEccv_Ec=G0jOYq_LoVonAPIAMBNujnLcGheNLWedG3WtYO3mbn0=QluX83Fb70cz1E8pS8V7mR4zpiIvPP-mO6XYaN-D7bU= ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] mesa: fix GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT query
Looks good. Reviewed-by: Neha Bhende<bhen...@vmware.com> Regards, Neha From: Brian Paul <bri...@vmware.com> Sent: Monday, July 17, 2017 11:28:43 AM To: mesa-dev@lists.freedesktop.org Cc: Charmaine Lee; Neha Bhende Subject: [PATCH] mesa: fix GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT query This query is not allowed in GL core profile 3.3 and later (since GL_QUADS and GL_QUAD_STRIP are disallowed). The query was (mistakenly) supported in GL 3.2. This fixes the glGet error test accordingly. --- src/mesa/main/get.c | 12 src/mesa/main/get_hash_params.py | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c index 6ad107b..3247653 100644 --- a/src/mesa/main/get.c +++ b/src/mesa/main/get.c @@ -162,6 +162,7 @@ enum value_extra { EXTRA_EXT_SSBO_GS, EXTRA_EXT_FB_NO_ATTACH_GS, EXTRA_EXT_ES_GS, + EXTRA_EXT_PROVOKING_VERTEX_32, }; #define NO_EXTRA NULL @@ -573,6 +574,12 @@ static const int extra_EXT_shader_framebuffer_fetch[] = { EXTRA_END }; +static const int extra_EXT_provoking_vertex_32[] = { + EXTRA_EXT_PROVOKING_VERTEX_32, + EXTRA_END +}; + + /* This is the big table describing all the enums we accept in * glGet*v(). The table is partitioned into six parts: enums * understood by all GL APIs (OpenGL, GLES and GLES2), enums shared @@ -1293,6 +1300,11 @@ check_extra(struct gl_context *ctx, const char *func, const struct value_desc *d if (_mesa_has_OES_geometry_shader(ctx)) api_found = GL_TRUE; break; + case EXTRA_EXT_PROVOKING_VERTEX_32: + api_check = TRUE; + if (version <= 32) +api_found = ctx->Extensions.EXT_provoking_vertex; + break; case EXTRA_END: break; default: /* *e is a offset into the extension struct */ diff --git a/src/mesa/main/get_hash_params.py b/src/mesa/main/get_hash_params.py index 850ce7d..9d67ca4 100644 --- a/src/mesa/main/get_hash_params.py +++ b/src/mesa/main/get_hash_params.py @@ -888,7 +888,7 @@ descriptor=[ # GL_EXT_provoking_vertex [ "PROVOKING_VERTEX_EXT", "CONTEXT_ENUM(Light.ProvokingVertex), extra_EXT_provoking_vertex" ], - [ "QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT", "CONTEXT_BOOL(Const.QuadsFollowProvokingVertexConvention), extra_EXT_provoking_vertex" ], + [ "QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT", "CONTEXT_BOOL(Const.QuadsFollowProvokingVertexConvention), extra_EXT_provoking_vertex_32" ], # GL_ARB_seamless_cube_map [ "TEXTURE_CUBE_MAP_SEAMLESS", "CONTEXT_BOOL(Texture.CubeMapSeamless), extra_ARB_seamless_cube_map" ], -- 1.9.1 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH 5/5] svga: s/unsigned/enum tgsi_texture_type/
For the series, Reviewed-by: Neha Bhende <bhen...@vmware.com> Regards, Neha From: Brian Paul <bri...@vmware.com> Sent: Monday, July 10, 2017 2:50:25 PM To: mesa-dev@lists.freedesktop.org Cc: Charmaine Lee; Neha Bhende Subject: [PATCH 5/5] svga: s/unsigned/enum tgsi_texture_type/ --- src/gallium/drivers/svga/svga_tgsi_vgpu10.c | 7 --- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/gallium/drivers/svga/svga_tgsi_vgpu10.c b/src/gallium/drivers/svga/svga_tgsi_vgpu10.c index bbaad20..d29ac28 100644 --- a/src/gallium/drivers/svga/svga_tgsi_vgpu10.c +++ b/src/gallium/drivers/svga/svga_tgsi_vgpu10.c @@ -2955,7 +2955,8 @@ emit_sampler_declarations(struct svga_shader_emitter_v10 *emit) * Translate TGSI_TEXTURE_x to VGAPU10_RESOURCE_DIMENSION_x. */ static unsigned -tgsi_texture_to_resource_dimension(unsigned target, boolean is_array) +tgsi_texture_to_resource_dimension(enum tgsi_texture_type target, + boolean is_array) { switch (target) { case TGSI_TEXTURE_BUFFER: @@ -4867,7 +4868,7 @@ setup_texcoord(struct svga_shader_emitter_v10 *emit, */ static void emit_tex_compare_refcoord(struct svga_shader_emitter_v10 *emit, - unsigned target, + enum tgsi_texture_type target, const struct tgsi_full_src_register *coord) { struct tgsi_full_src_register coord_src_ref; @@ -4901,7 +4902,7 @@ struct tex_swizzle_info boolean swizzled; boolean shadow_compare; unsigned unit; - unsigned texture_target; /**< TGSI_TEXTURE_x */ + enum tgsi_texture_type texture_target; /**< TGSI_TEXTURE_x */ struct tgsi_full_src_register tmp_src; struct tgsi_full_dst_register tmp_dst; const struct tgsi_full_dst_register *inst_dst; -- 1.9.1 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] svga: update a few surface format names
Looks good to me. Reviewed-by: Neha Bhende<bhen...@vmware.com> Regards, Neha From: Brian Paul <bri...@vmware.com> Sent: Wednesday, June 28, 2017 3:44:35 PM To: mesa-dev@lists.freedesktop.org Cc: Charmaine Lee; Neha Bhende Subject: [PATCH] svga: update a few surface format names To sync with in-house changes. --- .../drivers/svga/include/svga3d_surfacedefs.h | 8 +++--- src/gallium/drivers/svga/include/svga3d_types.h| 8 +++--- src/gallium/drivers/svga/svga_format.c | 32 +++--- 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/gallium/drivers/svga/include/svga3d_surfacedefs.h b/src/gallium/drivers/svga/include/svga3d_surfacedefs.h index efa358b..89baff3 100644 --- a/src/gallium/drivers/svga/include/svga3d_surfacedefs.h +++ b/src/gallium/drivers/svga/include/svga3d_surfacedefs.h @@ -486,12 +486,12 @@ static const struct svga3d_surface_desc svga3d_surface_descs[] = { 64, {{0}, {8}, {32}, {0}}, {{0}, {32}, {0}, {0}}}, - {SVGA3D_R32_FLOAT_X8X24_TYPELESS, SVGA3DBLOCKDESC_R_FP, + {SVGA3D_R32_FLOAT_X8X24, SVGA3DBLOCKDESC_R_FP, {1, 1, 1}, 8, 8, 64, {{0}, {0}, {32}, {0}}, {{0}, {0}, {0}, {0}}}, - {SVGA3D_X32_TYPELESS_G8X24_UINT, SVGA3DBLOCKDESC_GREEN, + {SVGA3D_X32_G8X24_UINT, SVGA3DBLOCKDESC_GREEN, {1, 1, 1}, 8, 8, 64, {{0}, {8}, {0}, {0}}, {{0}, {32}, {0}, {0}}}, @@ -581,12 +581,12 @@ static const struct svga3d_surface_desc svga3d_surface_descs[] = { 32, {{0}, {8}, {24}, {0}}, {{0}, {24}, {0}, {0}}}, - {SVGA3D_R24_UNORM_X8_TYPELESS, SVGA3DBLOCKDESC_RED, + {SVGA3D_R24_UNORM_X8, SVGA3DBLOCKDESC_RED, {1, 1, 1}, 4, 4, 32, {{0}, {0}, {24}, {0}}, {{0}, {0}, {0}, {0}}}, - {SVGA3D_X24_TYPELESS_G8_UINT, SVGA3DBLOCKDESC_GREEN, + {SVGA3D_X24_G8_UINT, SVGA3DBLOCKDESC_GREEN, {1, 1, 1}, 4, 4, 32, {{0}, {8}, {0}, {0}}, {{0}, {24}, {0}, {0}}}, diff --git a/src/gallium/drivers/svga/include/svga3d_types.h b/src/gallium/drivers/svga/include/svga3d_types.h index de711c3..ddd9e35 100644 --- a/src/gallium/drivers/svga/include/svga3d_types.h +++ b/src/gallium/drivers/svga/include/svga3d_types.h @@ -204,8 +204,8 @@ typedef enum SVGA3dSurfaceFormat { SVGA3D_R32G32_SINT = 59, SVGA3D_R32G8X24_TYPELESS= 60, SVGA3D_D32_FLOAT_S8X24_UINT = 61, - SVGA3D_R32_FLOAT_X8X24_TYPELESS = 62, - SVGA3D_X32_TYPELESS_G8X24_UINT = 63, + SVGA3D_R32_FLOAT_X8X24 = 62, + SVGA3D_X32_G8X24_UINT = 63, SVGA3D_R10G10B10A2_TYPELESS = 64, SVGA3D_R10G10B10A2_UINT = 65, SVGA3D_R11G11B10_FLOAT = 66, @@ -223,8 +223,8 @@ typedef enum SVGA3dSurfaceFormat { SVGA3D_R32_SINT = 78, SVGA3D_R24G8_TYPELESS = 79, SVGA3D_D24_UNORM_S8_UINT= 80, - SVGA3D_R24_UNORM_X8_TYPELESS= 81, - SVGA3D_X24_TYPELESS_G8_UINT = 82, + SVGA3D_R24_UNORM_X8 = 81, + SVGA3D_X24_G8_UINT = 82, SVGA3D_R8G8_TYPELESS= 83, SVGA3D_R8G8_UNORM = 84, SVGA3D_R8G8_UINT= 85, diff --git a/src/gallium/drivers/svga/svga_format.c b/src/gallium/drivers/svga/svga_format.c index a914b23..95dd04d 100644 --- a/src/gallium/drivers/svga/svga_format.c +++ b/src/gallium/drivers/svga/svga_format.c @@ -530,10 +530,10 @@ struct format_cap { * avoid querying the host. In particular, depth/stencil formats which * can be rendered to and sampled from. For example, the gallium format * PIPE_FORMAT_Z24_UNORM_S8_UINT is converted to SVGA3D_D24_UNORM_S8_UINT - * for rendering but converted to SVGA3D_R24_UNORM_X8_TYPELESS for sampling. + * for rendering but converted to SVGA3D_R24_UNORM_X8 for sampling. * If we want to query if a format supports both rendering and sampling the * host will tell us no for SVGA3D_D24_UNORM_S8_UINT, SVGA3D_D16_UNORM and - * SVGA3D_R24_UNORM_X8_TYPELESS. So we override the host query for those + * SVGA3D_R24_UNORM_X8. So we override the host query for those * formats and report that both can do rendering and sampling. */ static const struct format_cap format_cap_table[] = { @@ -1026,8 +1026,8 @@ static const struct format_cap format_cap_table[] = { { /* Special case: no devcap / report sampler and depth/stencil ability */ - "SVGA3D_R32_FLOAT_X8X24_TYPELESS", - SVGA3D_R32_FLOAT_X8X24_TYPELESS, + "SVGA3D_R32_FLOAT_X8X24", + SVGA3D_R32_FLOAT_X8X24, 0, /*SVGA3D_DEVCAP_DXFMT_R32_FLOAT_X8X24_TYPELESS*/ 1, 1, 8, SVGA3DFORMAT_OP_TEXTURE | @@ -1036,8 +1036,8 @@ static const struct format_cap format_cap_table[] = { SVGA3DFORMAT_OP_ZSTENCIL }, { - "SVGA3D_X32_TYPELESS_G8X24_UINT", - SVGA3D_X32_TYPELESS_G8X24_UINT, + "SVGA3
Re: [Mesa-dev] [PATCH 2/2] svga: add new num-failed-allocations HUD query
For the series, Reviewed-by: Neha Bhende<bhen...@vmware.com> Regards, Neha From: Brian Paul <bri...@vmware.com> Sent: Friday, June 16, 2017 3:39:12 PM To: mesa-dev@lists.freedesktop.org Cc: Charmaine Lee; Neha Bhende Subject: [PATCH 2/2] svga: add new num-failed-allocations HUD query This counter is incremented if we fail to allocate memory for vertex/index/const buffers, textures, etc. --- src/gallium/drivers/svga/svga_context.h| 1 + src/gallium/drivers/svga/svga_pipe_query.c | 7 +++ src/gallium/drivers/svga/svga_resource.c | 17 +++-- src/gallium/drivers/svga/svga_screen.c | 2 ++ src/gallium/drivers/svga/svga_screen.h | 1 + 5 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/svga/svga_context.h b/src/gallium/drivers/svga/svga_context.h index 2987c70..b1ccfc8 100644 --- a/src/gallium/drivers/svga/svga_context.h +++ b/src/gallium/drivers/svga/svga_context.h @@ -72,6 +72,7 @@ enum svga_hud { SVGA_QUERY_NUM_STATE_OBJECTS, SVGA_QUERY_NUM_SURFACE_VIEWS, SVGA_QUERY_NUM_GENERATE_MIPMAP, + SVGA_QUERY_NUM_FAILED_ALLOCATIONS, /*SVGA_QUERY_MAX has to be last because it is size of an array*/ SVGA_QUERY_MAX diff --git a/src/gallium/drivers/svga/svga_pipe_query.c b/src/gallium/drivers/svga/svga_pipe_query.c index 76360fd..6703b72 100644 --- a/src/gallium/drivers/svga/svga_pipe_query.c +++ b/src/gallium/drivers/svga/svga_pipe_query.c @@ -747,6 +747,7 @@ svga_create_query(struct pipe_context *pipe, case SVGA_QUERY_NUM_BUFFER_UPLOADS: case SVGA_QUERY_NUM_CONST_BUF_UPDATES: case SVGA_QUERY_NUM_CONST_UPDATES: + case SVGA_QUERY_NUM_FAILED_ALLOCATIONS: break; case SVGA_QUERY_FLUSH_TIME: case SVGA_QUERY_MAP_BUFFER_TIME: @@ -826,6 +827,7 @@ svga_destroy_query(struct pipe_context *pipe, struct pipe_query *q) case SVGA_QUERY_NUM_BUFFER_UPLOADS: case SVGA_QUERY_NUM_CONST_BUF_UPDATES: case SVGA_QUERY_NUM_CONST_UPDATES: + case SVGA_QUERY_NUM_FAILED_ALLOCATIONS: /* nothing */ break; default: @@ -937,6 +939,7 @@ svga_begin_query(struct pipe_context *pipe, struct pipe_query *q) case SVGA_QUERY_NUM_STATE_OBJECTS: case SVGA_QUERY_NUM_SURFACE_VIEWS: case SVGA_QUERY_NUM_GENERATE_MIPMAP: + case SVGA_QUERY_NUM_FAILED_ALLOCATIONS: /* nothing */ break; default: @@ -1049,6 +1052,7 @@ svga_end_query(struct pipe_context *pipe, struct pipe_query *q) case SVGA_QUERY_NUM_STATE_OBJECTS: case SVGA_QUERY_NUM_SURFACE_VIEWS: case SVGA_QUERY_NUM_GENERATE_MIPMAP: + case SVGA_QUERY_NUM_FAILED_ALLOCATIONS: /* nothing */ break; default: @@ -1182,6 +1186,9 @@ svga_get_query_result(struct pipe_context *pipe, case SVGA_QUERY_NUM_GENERATE_MIPMAP: vresult->u64 = svga->hud.num_generate_mipmap; break; + case SVGA_QUERY_NUM_FAILED_ALLOCATIONS: + vresult->u64 = svgascreen->hud.num_failed_allocations; + break; default: assert(!"unexpected query type in svga_get_query_result"); } diff --git a/src/gallium/drivers/svga/svga_resource.c b/src/gallium/drivers/svga/svga_resource.c index 6a297a2..874cfa0 100644 --- a/src/gallium/drivers/svga/svga_resource.c +++ b/src/gallium/drivers/svga/svga_resource.c @@ -33,14 +33,27 @@ #include "svga_format.h" +/** + * This is the primary driver entrypoint for allocating graphics memory + * (vertex/index/constant buffers, textures, etc) + */ static struct pipe_resource * svga_resource_create(struct pipe_screen *screen, const struct pipe_resource *template) { + struct pipe_resource *r; + if (template->target == PIPE_BUFFER) - return svga_buffer_create(screen, template); + r = svga_buffer_create(screen, template); else - return svga_texture_create(screen, template); + r = svga_texture_create(screen, template); + + if (!r) { + struct svga_screen *svgascreen = svga_screen(screen); + svgascreen->hud.num_failed_allocations++; + } + + return r; } diff --git a/src/gallium/drivers/svga/svga_screen.c b/src/gallium/drivers/svga/svga_screen.c index 3aa9945..0b63525 100644 --- a/src/gallium/drivers/svga/svga_screen.c +++ b/src/gallium/drivers/svga/svga_screen.c @@ -916,6 +916,8 @@ svga_get_driver_query_info(struct pipe_screen *screen, PIPE_DRIVER_QUERY_TYPE_UINT64), QUERY("num-generate-mipmap", SVGA_QUERY_NUM_GENERATE_MIPMAP, PIPE_DRIVER_QUERY_TYPE_UINT64), + QUERY("num-failed-allocations", SVGA_QUERY_NUM_FAILED_ALLOCATIONS, +PIPE_DRIVER_QUERY_TYPE_UINT64), }; #undef QUERY diff --git a/src/gallium/drivers/svga/svga_screen.h b/src/gallium/drivers/svga/svga_screen.h index 68834a6..12b9346 100644 --- a/src/gallium/drivers/svga/svga_screen.h +++ b/src/gallium/drivers/svga/svga_screen.h @@ -86,6 +86,7 @@ struct svga_screen /**
Re: [Mesa-dev] [PATCH 2/2] wglgears: fix up wglChoosePixelFormatARB() attribute list
Looks good to me. For the series, Reviewed-by: Neha Bhende<bhen...@vmware.com> Regards, Neha From: Brian Paul <bri...@vmware.com> Sent: Wednesday, May 3, 2017 12:49:40 PM To: mesa-dev@lists.freedesktop.org Cc: Charmaine Lee; Neha Bhende Subject: [PATCH 2/2] wglgears: fix up wglChoosePixelFormatARB() attribute list Specify WGL_DRAW_TO_WINDOW_ARB and WGL_COLOR_BITS_ARB. Improve some comments, per Charmaine. --- src/wgl/wglgears.c | 13 +++-- 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/wgl/wglgears.c b/src/wgl/wglgears.c index 7d43822..d673143 100644 --- a/src/wgl/wglgears.c +++ b/src/wgl/wglgears.c @@ -421,11 +421,12 @@ make_window(const char *name, int x, int y, int width, int height) } if (use_srgb) { - /* For sRGB we need to use the wglChoosePixelFormatARB() function, - * and then create a new context, window, etc. + /* We can't query/use extension functions until after we've + * created and bound a rendering context (done above). * - * Note: we can't query/use extension functions until after we've - * creatend and bound a rendering context. + * We can only set the pixel format of the window once, so we need to + * create a new device context in order to use the pixel format returned + * from wglChoosePixelFormatARB, and then create a new window. */ PFNWGLCHOOSEPIXELFORMATARBPROC wglChoosePixelFormatARB_func = (PFNWGLCHOOSEPIXELFORMATARBPROC) @@ -434,8 +435,8 @@ make_window(const char *name, int x, int y, int width, int height) static const int int_attribs[] = { WGL_SUPPORT_OPENGL_ARB, TRUE, - //WGL_COLOR_BITS_ARB, 24, - //WGL_ALPHA_BITS_ARB, 8, + WGL_DRAW_TO_WINDOW_ARB, TRUE, + WGL_COLOR_BITS_ARB, 24, // at least 24-bits of RGB WGL_DEPTH_BITS_ARB, 24, WGL_DOUBLE_BUFFER_ARB, TRUE, WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB, TRUE, -- 1.9.1 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH 2/2] wglinfo: query/print sRGB and float pixel format info
series looks good to me. Reviewed-by : Neha Bhende <bhen...@vmware.com> Regards, Neha From: Brian Paul <bri...@vmware.com> Sent: Thursday, April 27, 2017 10:19:07 AM To: mesa-dev@lists.freedesktop.org Cc: Charmaine Lee; Neha Bhende Subject: [PATCH 2/2] wglinfo: query/print sRGB and float pixel format info Print the columns in the same place as glxinfo. Use 3 digit hexadecimal field for printing pixel format number. Remove the 'caveat' field which is non-existant in WGL. This also fixes a minor bug when we query WGL_PIXEL_TYPE_ARB. We previously stored the result in info->pfd.iPixelType which is a BYTE type but the WGL_TYPE_* values are all larger than 255. Use a temporary variable instead. --- src/wgl/wglinfo.c | 61 +++ 1 file changed, 39 insertions(+), 22 deletions(-) diff --git a/src/wgl/wglinfo.c b/src/wgl/wglinfo.c index 8693450..f81978b 100644 --- a/src/wgl/wglinfo.c +++ b/src/wgl/wglinfo.c @@ -31,8 +31,9 @@ * -l print interesting OpenGL limits (added 5 Sep 2002) */ -#include +#include +#include #include #include #include @@ -45,6 +46,7 @@ static GLboolean have_WGL_ARB_create_context; static GLboolean have_WGL_ARB_pixel_format; static GLboolean have_WGL_ARB_multisample; +static GLboolean have_WGL_ARB_framebuffer_sRGB; /* or EXT version */ static PFNWGLGETPIXELFORMATATTRIBIVARBPROC wglGetPixelFormatAttribivARB_func; static PFNWGLCREATECONTEXTATTRIBSARBPROC wglCreateContextAttribsARB_func; @@ -57,6 +59,8 @@ struct format_info { PIXELFORMATDESCRIPTOR pfd; int sampleBuffers, numSamples; int transparency; + bool floatComponents; + bool srgb; }; @@ -172,6 +176,10 @@ print_screen_info(HDC _hdc, const struct options *opts, GLboolean coreProfile) if (extension_supported("WGL_ARB_create_context", wglExtensions)) { have_WGL_ARB_create_context = GL_TRUE; } + if (extension_supported("WGL_ARB_framebuffer_sRGB", wglExtensions) || + extension_supported("WGL_EXT_framebuffer_sRGB", wglExtensions)) { +have_WGL_ARB_framebuffer_sRGB = GL_TRUE; + } } #endif @@ -327,9 +335,11 @@ print_visual_attribs_verbose(int iPixelFormat, const struct format_info *info) visual_render_type_name(info->pfd.iPixelType), info->pfd.dwFlags & PFD_DOUBLEBUFFER ? 1 : 0, info->pfd.dwFlags & PFD_STEREO ? 1 : 0); - printf("rgba: cRedBits=%d cGreenBits=%d cBlueBits=%d cAlphaBits=%d\n", + printf("rgba: cRedBits=%d cGreenBits=%d cBlueBits=%d cAlphaBits=%d float=%c sRGB=%c\n", info->pfd.cRedBits, info->pfd.cGreenBits, - info->pfd.cBlueBits, info->pfd.cAlphaBits); + info->pfd.cBlueBits, info->pfd.cAlphaBits, + info->floatComponents ? 'Y' : 'N', + info->srgb ? 'Y' : 'N'); printf("cAuxBuffers=%d cDepthBits=%d cStencilBits=%d\n", info->pfd.cAuxBuffers, info->pfd.cDepthBits, info->pfd.cStencilBits); printf("accum: cRedBits=%d cGreenBits=%d cBlueBits=%d cAlphaBits=%d\n", @@ -343,25 +353,22 @@ print_visual_attribs_verbose(int iPixelFormat, const struct format_info *info) printf("swapMethod = Copy\n"); else printf("swapMethod = Undefined\n"); - } static void print_visual_attribs_short_header(void) { - printf(" visual x bf lv rg d st colorbuffer ax dp st accumbuffer ms cav\n"); - printf(" id gen win sp sz l ci b ro r g b a bf th cl r g b a ns b eat\n"); - printf("\n"); + printf("visual x bf lv rg d st colorbuffer sr ax dp st accumbuffer ms \n"); + printf(" id gen win sp sz l ci b ro r g b a F gb bf th cl r g b a ns b\n"); + printf("-\n"); } static void print_visual_attribs_short(int iPixelFormat, const struct format_info *info) { - char *caveat = "None"; - - printf("0x%02x %2d %2d %2d %3d %2d %c%c %c %c %2d %2d %2d %2d %2d %2d %2d", + printf("0x%03x %2d %2d %2d %3d %2d %c%c %c %c %2d %2d %2d %2d %c %c %2d %2d %2d", iPixelFormat, info->pfd.dwFlags & PFD_GENERIC_FORMAT ? 1 : 0, info->pfd.dwFlags & PFD_DRAW_TO_WINDOW ? 1 : 0, @@ -374,33 +381,33 @@ print_visual_attribs_short(int iPixelFormat, const struct format_info *info) info->pfd.dwFlags & PFD_STEREO ? 'y' : '.', info->pfd.cRedBits, info->pfd.cGreenBits, info->pfd.cBlueBits, info->pfd.cAlphaBits, + info->floatComponents ? 'f' : '.', + info-
Re: [Mesa-dev] [PATCH] st/mesa: minor clean-ups in st_update_renderbuffer_surface()
Looks good to me. Reviewed-by: Neha Bhende<bhen...@vmware.com> Regards, Neha From: Brian Paul <bri...@vmware.com> Sent: Wednesday, April 26, 2017 8:28:02 AM To: mesa-dev@lists.freedesktop.org Cc: Charmaine Lee; Neha Bhende Subject: [PATCH] st/mesa: minor clean-ups in st_update_renderbuffer_surface() Remove unneeded parens. Add const qualifiers. Move var decls closer to where they're used. --- src/mesa/state_tracker/st_cb_fbo.c | 17 - 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/mesa/state_tracker/st_cb_fbo.c b/src/mesa/state_tracker/st_cb_fbo.c index 7b9855f..f908225 100644 --- a/src/mesa/state_tracker/st_cb_fbo.c +++ b/src/mesa/state_tracker/st_cb_fbo.c @@ -388,18 +388,19 @@ st_update_renderbuffer_surface(struct st_context *st, { struct pipe_context *pipe = st->pipe; struct pipe_resource *resource = strb->texture; - struct st_texture_object *stTexObj = NULL; + const struct st_texture_object *stTexObj = NULL; unsigned rtt_width = strb->Base.Width; unsigned rtt_height = strb->Base.Height; unsigned rtt_depth = strb->Base.Depth; + /* * For winsys fbo, it is possible that the renderbuffer is sRGB-capable but * the format of strb->texture is linear (because we have no control over * the format). Check strb->Base.Format instead of strb->texture->format * to determine if the rb is sRGB-capable. */ - boolean enable_srgb = (st->ctx->Color.sRGBEnabled && - _mesa_get_format_color_encoding(strb->Base.Format) == GL_SRGB); + boolean enable_srgb = st->ctx->Color.sRGBEnabled && + _mesa_get_format_color_encoding(strb->Base.Format) == GL_SRGB; enum pipe_format format = resource->format; if (strb->is_rtt) { @@ -408,11 +409,7 @@ st_update_renderbuffer_surface(struct st_context *st, format = stTexObj->surface_format; } - format = (enable_srgb) ? - util_format_srgb(format) : - util_format_linear(format); - - unsigned first_layer, last_layer, level; + format = enable_srgb ? util_format_srgb(format) : util_format_linear(format); if (resource->target == PIPE_TEXTURE_1D_ARRAY) { rtt_depth = rtt_height; @@ -420,6 +417,7 @@ st_update_renderbuffer_surface(struct st_context *st, } /* find matching mipmap level size */ + unsigned level; for (level = 0; level <= resource->last_level; level++) { if (u_minify(resource->width0, level) == rtt_width && u_minify(resource->height0, level) == rtt_height && @@ -431,6 +429,7 @@ st_update_renderbuffer_surface(struct st_context *st, assert(level <= resource->last_level); /* determine the layer bounds */ + unsigned first_layer, last_layer; if (strb->rtt_layered) { first_layer = 0; last_layer = util_max_layer(strb->texture, level); @@ -443,7 +442,7 @@ st_update_renderbuffer_surface(struct st_context *st, /* Adjust for texture views */ if (strb->is_rtt && resource->array_size > 1 && stTexObj->base.Immutable) { - struct gl_texture_object *tex = >base; + const struct gl_texture_object *tex = >base; first_layer += tex->MinLayer; if (!strb->rtt_layered) last_layer += tex->MinLayer; -- 1.9.1 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH 14/14] svga: move some code in svga_propagate_surface()
Series looks good me. Reviewed-by: Neha Bhende <bhen...@vmware.com> Regards, Neha From: Brian Paul <bri...@vmware.com> Sent: Friday, August 26, 2016 8:27:18 AM To: mesa-dev@lists.freedesktop.org Cc: Neha Bhende; Jose Fonseca Subject: [PATCH 14/14] svga: move some code in svga_propagate_surface() Move computation of zslice, layer inside the conditional where they're used. --- src/gallium/drivers/svga/svga_surface.c | 37 + 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/src/gallium/drivers/svga/svga_surface.c b/src/gallium/drivers/svga/svga_surface.c index 4b0b56c..00e9cbc 100644 --- a/src/gallium/drivers/svga/svga_surface.c +++ b/src/gallium/drivers/svga/svga_surface.c @@ -607,35 +607,36 @@ svga_propagate_surface(struct svga_context *svga, struct pipe_surface *surf) struct svga_surface *s = svga_surface(surf); struct svga_texture *tex = svga_texture(surf->texture); struct svga_screen *ss = svga_screen(surf->texture->screen); - unsigned zslice, layer; - unsigned nlayers = 1; - unsigned i; if (!s->dirty) return; SVGA_STATS_TIME_PUSH(ss->sws, SVGA_STATS_TIME_PROPAGATESURFACE); - if (surf->texture->target == PIPE_TEXTURE_CUBE) { - zslice = 0; - layer = surf->u.tex.first_layer; - } - else if (surf->texture->target == PIPE_TEXTURE_1D_ARRAY || -surf->texture->target == PIPE_TEXTURE_2D_ARRAY) { - zslice = 0; - layer = surf->u.tex.first_layer; - nlayers = surf->u.tex.last_layer - surf->u.tex.first_layer + 1; - } - else { - zslice = surf->u.tex.first_layer; - layer = 0; - } - s->dirty = FALSE; ss->texture_timestamp++; svga_age_texture_view(tex, surf->u.tex.level); if (s->handle != tex->handle) { + unsigned zslice, layer; + unsigned nlayers = 1; + unsigned i; + + if (surf->texture->target == PIPE_TEXTURE_CUBE) { + zslice = 0; + layer = surf->u.tex.first_layer; + } + else if (surf->texture->target == PIPE_TEXTURE_1D_ARRAY || + surf->texture->target == PIPE_TEXTURE_2D_ARRAY) { + zslice = 0; + layer = surf->u.tex.first_layer; + nlayers = surf->u.tex.last_layer - surf->u.tex.first_layer + 1; + } + else { + zslice = surf->u.tex.first_layer; + layer = 0; + } + SVGA_DBG(DEBUG_VIEWS, "svga: Surface propagate: tex %p, level %u, from %p\n", tex, surf->u.tex.level, surf); -- 1.9.1 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH 2/2] svga: fix src/dst typo in can_blit_via_copy_region_vgpu10()
Looks good to me. Reviewed-by: Neha Bhende <bhen...@vmware.com> Regards, Neha From: Brian Paul <bri...@vmware.com> Sent: Wednesday, August 17, 2016 7:40:13 AM To: mesa-dev@lists.freedesktop.org Cc: Charmaine Lee; Neha Bhende Subject: [PATCH 2/2] svga: fix src/dst typo in can_blit_via_copy_region_vgpu10() The function was always returning false because of this typo. Retested with piglit. There's some sRGB-related blit failures, but that seems unrelated. --- src/gallium/drivers/svga/svga_pipe_blit.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gallium/drivers/svga/svga_pipe_blit.c b/src/gallium/drivers/svga/svga_pipe_blit.c index 1f6382e..9d8c4fe 100644 --- a/src/gallium/drivers/svga/svga_pipe_blit.c +++ b/src/gallium/drivers/svga/svga_pipe_blit.c @@ -223,7 +223,7 @@ can_blit_via_copy_region_vgpu10(struct svga_context *svga, return false; stex = svga_texture(blit_info->src.resource); - dtex = svga_texture(blit_info->src.resource); + dtex = svga_texture(blit_info->dst.resource); // can't copy within one resource if (stex->handle == dtex->handle) -- 1.9.1 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev