Mesa (master): mesa/formats: add more MESA_FORMAT_LAYOUTs
Module: Mesa Branch: master Commit: 0872b042b13388bc870a3acf167a6ce692b734dd URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0872b042b13388bc870a3acf167a6ce692b734dd Author: Nanley Chery nanley.g.ch...@intel.com Date: Fri Aug 7 14:36:23 2015 -0700 mesa/formats: add more MESA_FORMAT_LAYOUTs Add the classes of compressed formats as layouts. This allows the detection of compressed formats belonging to a certain category of compressed formats. v2. simplify layout name construction (Ilia). Reviewed-by: Chad Versace chad.vers...@intel.com Signed-off-by: Nanley Chery nanley.g.ch...@intel.com --- src/mesa/main/format_info.py | 10 +- src/mesa/main/formats.c |6 ++ src/mesa/main/formats.h |6 ++ src/mesa/main/texcompress.c | 30 ++ 4 files changed, 19 insertions(+), 33 deletions(-) diff --git a/src/mesa/main/format_info.py b/src/mesa/main/format_info.py index 3bae57e..c249e73 100644 --- a/src/mesa/main/format_info.py +++ b/src/mesa/main/format_info.py @@ -98,14 +98,6 @@ def get_gl_data_type(fmat): else: assert False -def get_mesa_layout(fmat): - if fmat.layout == 'array': - return 'MESA_FORMAT_LAYOUT_ARRAY' - elif fmat.layout == 'packed': - return 'MESA_FORMAT_LAYOUT_PACKED' - else: - return 'MESA_FORMAT_LAYOUT_OTHER' - def get_channel_bits(fmat, chan_name): if fmat.is_compressed(): # These values are pretty-much bogus, but OpenGL requires that we @@ -179,7 +171,7 @@ for fmat in formats: print ' {' print ' {0},'.format(fmat.name) print ' {0},'.format(fmat.name) - print ' {0},'.format(get_mesa_layout(fmat)) + print ' {0},'.format('MESA_FORMAT_LAYOUT_' + fmat.layout.upper()) print ' {0},'.format(get_gl_base_format(fmat)) print ' {0},'.format(get_gl_data_type(fmat)) diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c index d7b2bae..8c7e6ad 100644 --- a/src/mesa/main/formats.c +++ b/src/mesa/main/formats.c @@ -188,6 +188,12 @@ _mesa_get_format_max_bits(mesa_format format) * The return value will be one of: *MESA_FORMAT_LAYOUT_ARRAY *MESA_FORMAT_LAYOUT_PACKED + *MESA_FORMAT_LAYOUT_S3TC + *MESA_FORMAT_LAYOUT_RGTC + *MESA_FORMAT_LAYOUT_FXT1 + *MESA_FORMAT_LAYOUT_ETC1 + *MESA_FORMAT_LAYOUT_ETC2 + *MESA_FORMAT_LAYOUT_BPTC *MESA_FORMAT_LAYOUT_OTHER */ extern enum mesa_format_layout diff --git a/src/mesa/main/formats.h b/src/mesa/main/formats.h index d938e6a..d267d3b 100644 --- a/src/mesa/main/formats.h +++ b/src/mesa/main/formats.h @@ -64,6 +64,12 @@ extern C { enum mesa_format_layout { MESA_FORMAT_LAYOUT_ARRAY, MESA_FORMAT_LAYOUT_PACKED, + MESA_FORMAT_LAYOUT_S3TC, + MESA_FORMAT_LAYOUT_RGTC, + MESA_FORMAT_LAYOUT_FXT1, + MESA_FORMAT_LAYOUT_ETC1, + MESA_FORMAT_LAYOUT_ETC2, + MESA_FORMAT_LAYOUT_BPTC, MESA_FORMAT_LAYOUT_OTHER, }; diff --git a/src/mesa/main/texcompress.c b/src/mesa/main/texcompress.c index 0fd1a36..edfb036 100644 --- a/src/mesa/main/texcompress.c +++ b/src/mesa/main/texcompress.c @@ -586,34 +586,16 @@ _mesa_compressed_image_address(GLint col, GLint row, GLint img, compressed_fetch_func _mesa_get_compressed_fetch_func(mesa_format format) { - switch (format) { - case MESA_FORMAT_RGB_DXT1: - case MESA_FORMAT_RGBA_DXT1: - case MESA_FORMAT_RGBA_DXT3: - case MESA_FORMAT_RGBA_DXT5: - case MESA_FORMAT_SRGB_DXT1: - case MESA_FORMAT_SRGBA_DXT1: - case MESA_FORMAT_SRGBA_DXT3: - case MESA_FORMAT_SRGBA_DXT5: + switch (_mesa_get_format_layout(format)) { + case MESA_FORMAT_LAYOUT_S3TC: return _mesa_get_dxt_fetch_func(format); - case MESA_FORMAT_RGB_FXT1: - case MESA_FORMAT_RGBA_FXT1: + case MESA_FORMAT_LAYOUT_FXT1: return _mesa_get_fxt_fetch_func(format); - case MESA_FORMAT_R_RGTC1_UNORM: - case MESA_FORMAT_L_LATC1_UNORM: - case MESA_FORMAT_R_RGTC1_SNORM: - case MESA_FORMAT_L_LATC1_SNORM: - case MESA_FORMAT_RG_RGTC2_UNORM: - case MESA_FORMAT_LA_LATC2_UNORM: - case MESA_FORMAT_RG_RGTC2_SNORM: - case MESA_FORMAT_LA_LATC2_SNORM: + case MESA_FORMAT_LAYOUT_RGTC: return _mesa_get_compressed_rgtc_func(format); - case MESA_FORMAT_ETC1_RGB8: + case MESA_FORMAT_LAYOUT_ETC1: return _mesa_get_etc_fetch_func(format); - case MESA_FORMAT_BPTC_RGBA_UNORM: - case MESA_FORMAT_BPTC_SRGB_ALPHA_UNORM: - case MESA_FORMAT_BPTC_RGB_SIGNED_FLOAT: - case MESA_FORMAT_BPTC_RGB_UNSIGNED_FLOAT: + case MESA_FORMAT_LAYOUT_BPTC: return _mesa_get_bptc_fetch_func(format); default: return NULL; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): mesa/formats: refactor by collapsing cases in switch statement by type
Module: Mesa Branch: master Commit: ffe6c6ad5f719dedd1b6b95e8590e3f20b23d340 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ffe6c6ad5f719dedd1b6b95e8590e3f20b23d340 Author: Nanley Chery nanley.g.ch...@intel.com Date: Tue Aug 11 11:56:35 2015 -0700 mesa/formats: refactor by collapsing cases in switch statement by type Combine the adjacent cases which have the same GL type in the switch statemnt. Reviewed-by: Chad Versace chad.vers...@intel.com Signed-off-by: Nanley Chery nanley.g.ch...@intel.com --- src/mesa/main/formats.c | 152 ++- 1 file changed, 17 insertions(+), 135 deletions(-) diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c index 8c7e6ad..a55341d 100644 --- a/src/mesa/main/formats.c +++ b/src/mesa/main/formats.c @@ -1013,13 +1013,10 @@ _mesa_format_to_type_and_comps(mesa_format format, case MESA_FORMAT_R8G8B8X8_UNORM: case MESA_FORMAT_B8G8R8X8_UNORM: case MESA_FORMAT_X8R8G8B8_UNORM: - *datatype = GL_UNSIGNED_BYTE; - *comps = 4; - return; case MESA_FORMAT_BGR_UNORM8: case MESA_FORMAT_RGB_UNORM8: *datatype = GL_UNSIGNED_BYTE; - *comps = 3; + *comps = _mesa_format_num_components(format); return; case MESA_FORMAT_B5G6R5_UNORM: case MESA_FORMAT_R5G6B5_UNORM: @@ -1068,16 +1065,12 @@ _mesa_format_to_type_and_comps(mesa_format format, case MESA_FORMAT_A16L16_UNORM: case MESA_FORMAT_R16G16_UNORM: case MESA_FORMAT_G16R16_UNORM: - *datatype = GL_UNSIGNED_SHORT; - *comps = 2; - return; - case MESA_FORMAT_R_UNORM16: case MESA_FORMAT_A_UNORM16: case MESA_FORMAT_L_UNORM16: case MESA_FORMAT_I_UNORM16: *datatype = GL_UNSIGNED_SHORT; - *comps = 1; + *comps = _mesa_format_num_components(format); return; case MESA_FORMAT_R3G3B2_UNORM: @@ -1085,10 +1078,6 @@ _mesa_format_to_type_and_comps(mesa_format format, *comps = 3; return; case MESA_FORMAT_A4B4G4R4_UNORM: - *datatype = GL_UNSIGNED_SHORT_4_4_4_4; - *comps = 4; - return; - case MESA_FORMAT_R4G4B4A4_UNORM: *datatype = GL_UNSIGNED_SHORT_4_4_4_4; *comps = 4; @@ -1099,9 +1088,6 @@ _mesa_format_to_type_and_comps(mesa_format format, return; case MESA_FORMAT_A2B10G10R10_UNORM: case MESA_FORMAT_A2B10G10R10_UINT: - *datatype = GL_UNSIGNED_INT_10_10_10_2; - *comps = 4; - return; case MESA_FORMAT_A2R10G10B10_UNORM: case MESA_FORMAT_A2R10G10B10_UINT: *datatype = GL_UNSIGNED_INT_10_10_10_2; @@ -1144,15 +1130,7 @@ _mesa_format_to_type_and_comps(mesa_format format, return; case MESA_FORMAT_Z24_UNORM_X8_UINT: - *datatype = GL_UNSIGNED_INT; - *comps = 1; - return; - case MESA_FORMAT_X8_UINT_Z24_UNORM: - *datatype = GL_UNSIGNED_INT; - *comps = 1; - return; - case MESA_FORMAT_Z_UNORM32: *datatype = GL_UNSIGNED_INT; *comps = 1; @@ -1172,20 +1150,14 @@ _mesa_format_to_type_and_comps(mesa_format format, case MESA_FORMAT_A_SNORM8: case MESA_FORMAT_L_SNORM8: case MESA_FORMAT_I_SNORM8: - *datatype = GL_BYTE; - *comps = 1; - return; case MESA_FORMAT_R8G8_SNORM: case MESA_FORMAT_L8A8_SNORM: case MESA_FORMAT_A8L8_SNORM: - *datatype = GL_BYTE; - *comps = 2; - return; case MESA_FORMAT_A8B8G8R8_SNORM: case MESA_FORMAT_R8G8B8A8_SNORM: case MESA_FORMAT_X8B8G8R8_SNORM: *datatype = GL_BYTE; - *comps = 4; + *comps = _mesa_format_num_components(format); return; case MESA_FORMAT_RGBA_UNORM16: @@ -1197,42 +1169,24 @@ _mesa_format_to_type_and_comps(mesa_format format, case MESA_FORMAT_A_SNORM16: case MESA_FORMAT_L_SNORM16: case MESA_FORMAT_I_SNORM16: - *datatype = GL_SHORT; - *comps = 1; - return; case MESA_FORMAT_R16G16_SNORM: case MESA_FORMAT_LA_SNORM16: - *datatype = GL_SHORT; - *comps = 2; - return; case MESA_FORMAT_RGB_SNORM16: - *datatype = GL_SHORT; - *comps = 3; - return; case MESA_FORMAT_RGBA_SNORM16: *datatype = GL_SHORT; - *comps = 4; + *comps = _mesa_format_num_components(format); return; case MESA_FORMAT_BGR_SRGB8: - *datatype = GL_UNSIGNED_BYTE; - *comps = 3; - return; case MESA_FORMAT_A8B8G8R8_SRGB: case MESA_FORMAT_B8G8R8A8_SRGB: case MESA_FORMAT_A8R8G8B8_SRGB: case MESA_FORMAT_R8G8B8A8_SRGB: - *datatype = GL_UNSIGNED_BYTE; - *comps = 4; - return; case MESA_FORMAT_L_SRGB8: - *datatype = GL_UNSIGNED_BYTE; - *comps = 1; - return; case MESA_FORMAT_L8A8_SRGB: case MESA_FORMAT_A8L8_SRGB: *datatype = GL_UNSIGNED_BYTE; - *comps = 2; + *comps = _mesa_format_num_components(format); return; case MESA_FORMAT_RGB_FXT1: @@ -1317,166 +1271,94 @@ _mesa_format_to_type_and_comps(mesa_format format, case MESA_FORMAT_A_UINT8: case
Mesa (master): mesa/main: Add GL_IMAGE_FORMAT_COMPATIBILITY_TYPE to glGetTexParameterfv
Module: Mesa Branch: master Commit: 3df7856b4625f21ebf5465bad2556583b808c8bf URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=3df7856b4625f21ebf5465bad2556583b808c8bf Author: Marta Lofstedt marta.lofst...@intel.com Date: Wed Aug 12 11:57:39 2015 +0200 mesa/main: Add GL_IMAGE_FORMAT_COMPATIBILITY_TYPE to glGetTexParameterfv According to Open GL ES 3.1 specification, section 8.10.2 GL_IMAGE_FORMAT_COMPATIBILITY_TYPE should be supported by glGetTexParameterfv. Signed-off-by: Marta Lofstedt marta.lofst...@linux.intel.com Reviewed-by: Francisco Jerez curroje...@riseup.net --- src/mesa/main/texparam.c |6 ++ 1 file changed, 6 insertions(+) diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c index 5500eed..16739f1 100644 --- a/src/mesa/main/texparam.c +++ b/src/mesa/main/texparam.c @@ -1908,6 +1908,12 @@ get_tex_parameterfv(struct gl_context *ctx, *params = (GLfloat) obj-Sampler.sRGBDecode; break; + case GL_IMAGE_FORMAT_COMPATIBILITY_TYPE: + if (!ctx-Extensions.ARB_shader_image_load_store) +goto invalid_pname; + *params = (GLfloat) obj-ImageFormatCompatibilityType; + break; + default: goto invalid_pname; } ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): glsl: Fix up GL_ARB_compute_shader for GLSL ES 3.1
Module: Mesa Branch: master Commit: 2438e2fe326d7cb9f9d003f6edf77821e41ef22c URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=2438e2fe326d7cb9f9d003f6edf77821e41ef22c Author: Marta Lofstedt marta.lofst...@intel.com Date: Mon Aug 10 13:04:42 2015 +0200 glsl: Fix up GL_ARB_compute_shader for GLSL ES 3.1 GL_ARB_compute_shader is limited for GLSL version 430. This enables for GLSL ES version 310. V2: Updated error string to also include GLSL 3.10 Signed-off-by: Marta Lofstedt marta.lofst...@linux.intel.com Reviewed-by: Matt Turner matts...@gmail.com --- src/glsl/glsl_parser.yy |5 ++--- src/glsl/glsl_parser_extras.h |5 + 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/glsl/glsl_parser.yy b/src/glsl/glsl_parser.yy index 2b0c8bd..7a4b55c 100644 --- a/src/glsl/glsl_parser.yy +++ b/src/glsl/glsl_parser.yy @@ -1519,11 +1519,10 @@ layout_qualifier_id: invalid %s of %d specified, local_size_qualifiers[i], $3); YYERROR; -} else if (!state-is_version(430, 0) - !state-ARB_compute_shader_enable) { +} else if (!state-has_compute_shader()) { _mesa_glsl_error( @3, state, %s qualifier requires GLSL 4.30 or -ARB_compute_shader, +GLSL ES 3.10 or ARB_compute_shader, local_size_qualifiers[i]); YYERROR; } else { diff --git a/src/glsl/glsl_parser_extras.h b/src/glsl/glsl_parser_extras.h index eb325f0..57a7555 100644 --- a/src/glsl/glsl_parser_extras.h +++ b/src/glsl/glsl_parser_extras.h @@ -236,6 +236,11 @@ struct _mesa_glsl_parse_state { return ARB_shading_language_420pack_enable || is_version(420, 0); } + bool has_compute_shader() const + { + return ARB_compute_shader_enable || is_version(430, 310); + } + void process_version_directive(YYLTYPE *locp, int version, const char *ident); ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): st/mesa: add fake ARB_copy_image support in Gallium
Module: Mesa Branch: master Commit: f33a7ab150ea01f3550904fe3c56fcad32ce85e0 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=f33a7ab150ea01f3550904fe3c56fcad32ce85e0 Author: Ilia Mirkin imir...@alum.mit.edu Date: Mon Jul 20 15:19:53 2015 -0400 st/mesa: add fake ARB_copy_image support in Gallium This support should be removed in favor of something that actually works in all the weird cases. However this is simple and is enough to allow Bioshock Infinite to render properly on nvc0. Since the functionality is not implemented correctly, the extension will not appear in the extension string and mesa will still return INVALID_OPERATION for any glCopyImageSubData calls. In order to make use of this functionality, run with MESA_EXTENSION_OVERRIDE=GL_ARB_copy_image Signed-off-by: Ilia Mirkin imir...@alum.mit.edu Reviewed-by: Marek Olšák marek.ol...@amd.com --- src/mesa/state_tracker/st_cb_texture.c | 27 +++ 1 file changed, 27 insertions(+) diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c index 4f2ef6b..40bc29e 100644 --- a/src/mesa/state_tracker/st_cb_texture.c +++ b/src/mesa/state_tracker/st_cb_texture.c @@ -1873,6 +1873,31 @@ st_TextureView(struct gl_context *ctx, return GL_TRUE; } +/* HACK: this is only enough for the most basic uses of CopyImage. Must fix + * before actually exposing the extension. + */ +static void +st_CopyImageSubData(struct gl_context *ctx, +struct gl_texture_image *src_image, +int src_x, int src_y, int src_z, +struct gl_texture_image *dst_image, +int dst_x, int dst_y, int dst_z, +int src_width, int src_height) +{ + struct st_context *st = st_context(ctx); + struct pipe_context *pipe = st-pipe; + struct st_texture_image *src = st_texture_image(src_image); + struct st_texture_image *dst = st_texture_image(dst_image); + + struct pipe_box box; + + u_box_2d_zslice(src_x, src_y, src_z, src_width, src_height, box); + pipe-resource_copy_region(pipe, dst-pt, dst_image-Level, + dst_x, dst_y, dst_z, + src-pt, src_image-Level, + box); +} + void st_init_texture_functions(struct dd_function_table *functions) @@ -1905,4 +1930,6 @@ st_init_texture_functions(struct dd_function_table *functions) functions-AllocTextureStorage = st_AllocTextureStorage; functions-TextureView = st_TextureView; + + functions-CopyImageSubData = st_CopyImageSubData; } ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): radeonsi: fix indirect indexing of MSAA textures
Module: Mesa Branch: master Commit: 421b809db10b939d9baf7b904560c37b68261aaf URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=421b809db10b939d9baf7b904560c37b68261aaf Author: Marek Olšák marek.ol...@amd.com Date: Sat Aug 15 11:51:48 2015 +0200 radeonsi: fix indirect indexing of MSAA textures FMASK wasn't handled correctly. Reviewed-by: Michel Dänzer michel.daen...@amd.com --- src/gallium/drivers/radeonsi/si_shader.c | 17 + 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c index 4288e9b..066732d 100644 --- a/src/gallium/drivers/radeonsi/si_shader.c +++ b/src/gallium/drivers/radeonsi/si_shader.c @@ -2277,7 +2277,7 @@ static void tex_fetch_args( unsigned sampler_index; unsigned num_deriv_channels = 0; bool has_offset = HAVE_LLVM = 0x0305 ? inst-Texture.NumOffsets 0 : false; - LLVMValueRef res_ptr, samp_ptr; + LLVMValueRef res_ptr, samp_ptr, fmask_ptr = NULL; sampler_src = emit_data-inst-Instruction.NumSrcRegs - 1; sampler_index = emit_data-inst-Src[sampler_src].Register.Index; @@ -2293,9 +2293,19 @@ static void tex_fetch_args( samp_ptr = LLVMGetParam(si_shader_ctx-radeon_bld.main_fn, SI_PARAM_SAMPLER); samp_ptr = build_indexed_load_const(si_shader_ctx, samp_ptr, ind_index); + + if (target == TGSI_TEXTURE_2D_MSAA || + target == TGSI_TEXTURE_2D_ARRAY_MSAA) { + ind_index = LLVMBuildAdd(gallivm-builder, ind_index, +lp_build_const_int32(gallivm, + SI_FMASK_TEX_OFFSET), ); + fmask_ptr = LLVMGetParam(si_shader_ctx-radeon_bld.main_fn, SI_PARAM_RESOURCE); + fmask_ptr = build_indexed_load_const(si_shader_ctx, res_ptr, ind_index); + } } else { res_ptr = si_shader_ctx-resources[sampler_index]; samp_ptr = si_shader_ctx-samplers[sampler_index]; + fmask_ptr = si_shader_ctx-resources[SI_FMASK_TEX_OFFSET + sampler_index]; } if (target == TGSI_TEXTURE_BUFFER) { @@ -2493,7 +2503,7 @@ static void tex_fetch_args( txf_emit_data.dst_type = LLVMVectorType( LLVMInt32TypeInContext(gallivm-context), 4); txf_emit_data.args[0] = lp_build_gather_values(gallivm, txf_address, txf_count); - txf_emit_data.args[1] = si_shader_ctx-resources[SI_FMASK_TEX_OFFSET + sampler_index]; + txf_emit_data.args[1] = fmask_ptr; txf_emit_data.args[2] = lp_build_const_int32(gallivm, inst.Texture.Texture); txf_emit_data.arg_count = 3; @@ -2524,8 +2534,7 @@ static void tex_fetch_args( * resource descriptor is 0 (invalid), */ LLVMValueRef fmask_desc = - LLVMBuildBitCast(gallivm-builder, - si_shader_ctx-resources[SI_FMASK_TEX_OFFSET + sampler_index], + LLVMBuildBitCast(gallivm-builder, fmask_ptr, LLVMVectorType(uint_bld-elem_type, 8), ); LLVMValueRef fmask_word1 = ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): radeonsi: fix a typo as_es - as_ls in a string
Module: Mesa Branch: master Commit: 3b1e283d884b0c5c93c32d3e4a0325fbf2e96234 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=3b1e283d884b0c5c93c32d3e4a0325fbf2e96234 Author: Marek Olšák marek.ol...@amd.com Date: Wed Aug 19 00:56:33 2015 +0200 radeonsi: fix a typo as_es - as_ls in a string Trivial. --- src/gallium/drivers/radeonsi/si_shader.c |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c index 066732d..fa6c15a 100644 --- a/src/gallium/drivers/radeonsi/si_shader.c +++ b/src/gallium/drivers/radeonsi/si_shader.c @@ -3982,7 +3982,7 @@ static void si_dump_key(unsigned shader, union si_shader_key *key) fprintf(stderr, es_enabled_outputs = 0x%PRIx64\n, key-vs.es_enabled_outputs); fprintf(stderr, as_es = %u\n, key-vs.as_es); - fprintf(stderr, as_es = %u\n, key-vs.as_ls); + fprintf(stderr, as_ls = %u\n, key-vs.as_ls); break; case PIPE_SHADER_TESS_CTRL: ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): winsys/amdgpu: fix the type of memory usage counters
Module: Mesa Branch: master Commit: 5fb0180592b124857e2e0369e2cdee74bd552bb9 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=5fb0180592b124857e2e0369e2cdee74bd552bb9 Author: Marek Olšák marek.ol...@amd.com Date: Mon Aug 17 19:55:57 2015 +0200 winsys/amdgpu: fix the type of memory usage counters If the 32-bit types overflowed, the driver could submit an IB that uses much more memory than is available. Reviewed-by: Alex Deucher alexander.deuc...@amd.com Reviewed-by: Edward O'Callaghan eocallag...@alterapraxis.com Reviewed-by: Michel Dänzer michel.daen...@amd.com --- src/gallium/winsys/amdgpu/drm/amdgpu_cs.h |4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_cs.h b/src/gallium/winsys/amdgpu/drm/amdgpu_cs.h index 0842259..12c6b62 100644 --- a/src/gallium/winsys/amdgpu/drm/amdgpu_cs.h +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_cs.h @@ -77,8 +77,8 @@ struct amdgpu_cs { int buffer_indices_hashlist[512]; - unsignedused_vram; - unsignedused_gart; + uint64_tused_vram; + uint64_tused_gart; unsignedmax_dependencies; }; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): nir: Use nir_builder in nir_lower_io's get_io_offset().
Module: Mesa Branch: master Commit: ab83be590d4b45f50461a004b672f7640a4d8f53 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ab83be590d4b45f50461a004b672f7640a4d8f53 Author: Kenneth Graunke kenn...@whitecape.org Date: Wed Aug 12 11:26:34 2015 -0700 nir: Use nir_builder in nir_lower_io's get_io_offset(). Much more readable. Signed-off-by: Kenneth Graunke kenn...@whitecape.org Reviewed-by: Jason Ekstrand jason.ekstr...@intel.com --- src/glsl/nir/nir_lower_io.c | 42 ++ 1 file changed, 14 insertions(+), 28 deletions(-) diff --git a/src/glsl/nir/nir_lower_io.c b/src/glsl/nir/nir_lower_io.c index f3d11d4..d33aefe 100644 --- a/src/glsl/nir/nir_lower_io.c +++ b/src/glsl/nir/nir_lower_io.c @@ -32,8 +32,10 @@ */ #include nir.h +#include nir_builder.h struct lower_io_state { + nir_builder builder; void *mem_ctx; bool is_scalar; }; @@ -242,6 +244,9 @@ get_io_offset(nir_deref_var *deref, nir_instr *instr, nir_src *indirect, bool found_indirect = false; unsigned base_offset = 0; + nir_builder *b = state-builder; + nir_builder_insert_before_instr(b, instr); + nir_deref *tail = deref-deref; while (tail-child != NULL) { const struct glsl_type *parent_type = tail-type; @@ -254,38 +259,18 @@ get_io_offset(nir_deref_var *deref, nir_instr *instr, nir_src *indirect, base_offset += size * deref_array-base_offset; if (deref_array-deref_array_type == nir_deref_array_type_indirect) { -nir_load_const_instr *load_const = - nir_load_const_instr_create(state-mem_ctx, 1); -load_const-value.u[0] = size; -nir_instr_insert_before(instr, load_const-instr); - -nir_alu_instr *mul = nir_alu_instr_create(state-mem_ctx, - nir_op_imul); -mul-src[0].src.is_ssa = true; -mul-src[0].src.ssa = load_const-def; -nir_src_copy(mul-src[1].src, deref_array-indirect, - state-mem_ctx); -mul-dest.write_mask = 1; -nir_ssa_dest_init(mul-instr, mul-dest.dest, 1, NULL); -nir_instr_insert_before(instr, mul-instr); +nir_ssa_def *mul = + nir_imul(b, nir_imm_int(b, size), +nir_ssa_for_src(b, deref_array-indirect, 1)); if (found_indirect) { - nir_alu_instr *add = nir_alu_instr_create(state-mem_ctx, - nir_op_iadd); - add-src[0].src = *indirect; - add-src[1].src.is_ssa = true; - add-src[1].src.ssa = mul-dest.dest.ssa; - add-dest.write_mask = 1; - nir_ssa_dest_init(add-instr, add-dest.dest, 1, NULL); - nir_instr_insert_before(instr, add-instr); - - indirect-is_ssa = true; - indirect-ssa = add-dest.dest.ssa; + indirect-ssa = + nir_iadd(b, nir_ssa_for_src(b, *indirect, 1), mul); } else { - indirect-is_ssa = true; - indirect-ssa = mul-dest.dest.ssa; - found_indirect = true; + indirect-ssa = mul; } +indirect-is_ssa = true; +found_indirect = true; } } else if (tail-deref_type == nir_deref_type_struct) { nir_deref_struct *deref_struct = nir_deref_as_struct(tail); @@ -414,6 +399,7 @@ nir_lower_io_impl(nir_function_impl *impl, bool is_scalar) { struct lower_io_state state; + nir_builder_init(state.builder, impl); state.mem_ctx = ralloc_parent(impl); state.is_scalar = is_scalar; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): nir: Pull nir_lower_io' s load_op selection into a helper function.
Module: Mesa Branch: master Commit: ed2afec3fc2210ee737216981a41df8a396b11f6 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ed2afec3fc2210ee737216981a41df8a396b11f6 Author: Kenneth Graunke kenn...@whitecape.org Date: Wed Aug 12 10:57:31 2015 -0700 nir: Pull nir_lower_io's load_op selection into a helper function. Makes the function a bit smaller. Signed-off-by: Kenneth Graunke kenn...@whitecape.org Reviewed-by: Jason Ekstrand jason.ekstr...@intel.com --- src/glsl/nir/nir_lower_io.c | 39 ++- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/src/glsl/nir/nir_lower_io.c b/src/glsl/nir/nir_lower_io.c index 71bfd34..f3d11d4 100644 --- a/src/glsl/nir/nir_lower_io.c +++ b/src/glsl/nir/nir_lower_io.c @@ -299,6 +299,25 @@ get_io_offset(nir_deref_var *deref, nir_instr *instr, nir_src *indirect, return base_offset; } +static nir_intrinsic_op +load_op(nir_variable_mode mode, bool has_indirect) +{ + nir_intrinsic_op op; + switch (mode) { + case nir_var_shader_in: + op = has_indirect ? nir_intrinsic_load_input_indirect : + nir_intrinsic_load_input; + break; + case nir_var_uniform: + op = has_indirect ? nir_intrinsic_load_uniform_indirect : + nir_intrinsic_load_uniform; + break; + default: + unreachable(Unknown variable mode); + } + return op; +} + static bool nir_lower_io_block(nir_block *block, void *void_state) { @@ -318,23 +337,9 @@ nir_lower_io_block(nir_block *block, void *void_state) bool has_indirect = deref_has_indirect(intrin-variables[0]); - /* Figure out the opcode */ - nir_intrinsic_op load_op; - switch (mode) { - case nir_var_shader_in: -load_op = has_indirect ? nir_intrinsic_load_input_indirect : - nir_intrinsic_load_input; -break; - case nir_var_uniform: -load_op = has_indirect ? nir_intrinsic_load_uniform_indirect : - nir_intrinsic_load_uniform; -break; - default: -unreachable(Unknown variable mode); - } - - nir_intrinsic_instr *load = nir_intrinsic_instr_create(state-mem_ctx, -load_op); + nir_intrinsic_instr *load = +nir_intrinsic_instr_create(state-mem_ctx, + load_op(mode, has_indirect)); load-num_components = intrin-num_components; nir_src indirect; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit