From 8c4b88ee4885fcff8547238a8f752329083347d8 Mon Sep 17 00:00:00 2001 From: Emma Anholt Date: Tue, 31 May 2022 13:21:44 -0700 Subject: [PATCH] gallium+glsl: Remove EmitNoSat/PIPE_CAP_VERTEX_SHADER_SATURATE The drivers not setting it were: - nv30, which gets lowering using NIR's lower_fsat flag. - r300, which gets lowering using NIR's lower_fsat flag. - a2xx, which has was getting it optimized back to fsat anyway. This drops the check for the cap from gallium nine. While nine does have a non-nir path, I think it's safe to assume that if you have SM3 texturing, you can do fsat. Reviewed-by: Alyssa Rosenzweig Reviewed-by: Timothy Arceri Reviewed-by: Erik Faye-Lund Part-of: --- docs/gallium/screen.rst | 2 -- src/compiler/glsl/ir_optimization.h | 1 - src/compiler/glsl/lower_instructions.cpp | 31 ------------------- src/compiler/glsl/opt_algebraic.cpp | 2 +- src/gallium/auxiliary/util/u_screen.c | 1 - src/gallium/drivers/asahi/agx_pipe.c | 1 - src/gallium/drivers/crocus/crocus_screen.c | 1 - src/gallium/drivers/d3d12/d3d12_screen.cpp | 1 - src/gallium/drivers/etnaviv/etnaviv_screen.c | 1 - .../drivers/freedreno/freedreno_screen.c | 1 - src/gallium/drivers/iris/iris_screen.c | 1 - src/gallium/drivers/llvmpipe/lp_screen.c | 1 - .../drivers/nouveau/nv30/nv30_screen.c | 1 - .../drivers/nouveau/nv50/nv50_screen.c | 1 - .../drivers/nouveau/nvc0/nvc0_screen.c | 1 - src/gallium/drivers/panfrost/pan_screen.c | 1 - src/gallium/drivers/r300/r300_screen.c | 1 - src/gallium/drivers/r600/r600_pipe.c | 1 - src/gallium/drivers/radeonsi/si_get.c | 1 - src/gallium/drivers/softpipe/sp_screen.c | 1 - src/gallium/drivers/svga/svga_screen.c | 1 - src/gallium/drivers/v3d/v3d_screen.c | 1 - src/gallium/drivers/virgl/virgl_screen.c | 1 - src/gallium/drivers/zink/zink_screen.c | 1 - src/gallium/frontends/nine/adapter9.c | 3 +- src/gallium/include/pipe/p_defines.h | 1 - src/mesa/main/consts_exts.h | 1 - src/mesa/state_tracker/st_context.c | 6 ---- src/mesa/state_tracker/st_glsl_to_ir.cpp | 1 - 29 files changed, 2 insertions(+), 66 deletions(-) diff --git a/docs/gallium/screen.rst b/docs/gallium/screen.rst index 1309705db32..31c6ea990d2 100644 --- a/docs/gallium/screen.rst +++ b/docs/gallium/screen.rst @@ -572,8 +572,6 @@ The integer capabilities: explicit LOD is supported in the fragment shader. * ``PIPE_CAP_FRAGMENT_SHADER_DERIVATIVES``: True if the driver supports derivatives in fragment shaders. -* ``PIPE_CAP_VERTEX_SHADER_SATURATE``: True if the driver supports saturate - modifiers in the vertex shader. * ``PIPE_CAP_TEXTURE_SHADOW_LOD``: True if the driver supports shadow sampler types with texture functions having interaction with LOD of texture lookup. * ``PIPE_CAP_SHADER_SAMPLES_IDENTICAL``: True if the driver supports a shader query to tell whether all samples of a multisampled surface are definitely identical. diff --git a/src/compiler/glsl/ir_optimization.h b/src/compiler/glsl/ir_optimization.h index 7344cfe5002..81dc2719dfd 100644 --- a/src/compiler/glsl/ir_optimization.h +++ b/src/compiler/glsl/ir_optimization.h @@ -42,7 +42,6 @@ struct gl_shader_program; #define LDEXP_TO_ARITH 0x80 #define CARRY_TO_ARITH 0x100 #define BORROW_TO_ARITH 0x200 -#define SAT_TO_CLAMP 0x400 #define DOPS_TO_DFRAC 0x800 #define DFREXP_DLDEXP_TO_ARITH 0x1000 #define BIT_COUNT_TO_MATH 0x02000 diff --git a/src/compiler/glsl/lower_instructions.cpp b/src/compiler/glsl/lower_instructions.cpp index 93d203ed767..4c935431a96 100644 --- a/src/compiler/glsl/lower_instructions.cpp +++ b/src/compiler/glsl/lower_instructions.cpp @@ -38,7 +38,6 @@ * - LDEXP_TO_ARITH * - CARRY_TO_ARITH * - BORROW_TO_ARITH - * - SAT_TO_CLAMP * - DOPS_TO_DFRAC * * SUB_TO_ADD_NEG: @@ -97,10 +96,6 @@ * ---------------- * Converts ir_borrow into (x < y). * - * SAT_TO_CLAMP: - * ------------- - * Converts ir_unop_saturate into min(max(x, 0.0), 1.0) - * * DOPS_TO_DFRAC: * -------------- * Converts double trunc, ceil, floor, round to fract @@ -142,7 +137,6 @@ private: void dfrexp_exp_to_arith(ir_expression *); void carry_to_arith(ir_expression *); void borrow_to_arith(ir_expression *); - void sat_to_clamp(ir_expression *); void double_dot_to_fma(ir_expression *); void double_lrp(ir_expression *); void dceil_to_dfrac(ir_expression *); @@ -754,26 +748,6 @@ lower_instructions_visitor::borrow_to_arith(ir_expression *ir) this->progress = true; } -void -lower_instructions_visitor::sat_to_clamp(ir_expression *ir) -{ - /* Translates - * ir_unop_saturate x - * into - * ir_binop_min (ir_binop_max(x, 0.0), 1.0) - */ - - ir->operation = ir_binop_min; - ir->init_num_operands(); - - ir_constant *zero = _imm_fp(ir, ir->operands[0]->type, 0.0); - ir->operands[0] = new(ir) ir_expression(ir_binop_max, ir->operands[0]->type, - ir->operands[0], zero); - ir->operands[1] = _imm_fp(ir, ir->operands[0]->type, 1.0); - - this->progress = true; -} - void lower_instructions_visitor::double_dot_to_fma(ir_expression *ir) { @@ -1677,11 +1651,6 @@ lower_instructions_visitor::visit_leave(ir_expression *ir) borrow_to_arith(ir); break; - case ir_unop_saturate: - if (lowering(SAT_TO_CLAMP)) - sat_to_clamp(ir); - break; - case ir_unop_trunc: if (lowering(DOPS_TO_DFRAC) && ir->type->is_double()) dtrunc_to_dfrac(ir); diff --git a/src/compiler/glsl/opt_algebraic.cpp b/src/compiler/glsl/opt_algebraic.cpp index 5dc602a447a..8bf93c14848 100644 --- a/src/compiler/glsl/opt_algebraic.cpp +++ b/src/compiler/glsl/opt_algebraic.cpp @@ -860,7 +860,7 @@ ir_algebraic_visitor::handle_expression(ir_expression *ir) case ir_binop_min: case ir_binop_max: - if (!ir->type->is_float() || options->EmitNoSat) + if (!ir->type->is_float()) break; /* Replace min(max) operations and its commutative combinations with diff --git a/src/gallium/auxiliary/util/u_screen.c b/src/gallium/auxiliary/util/u_screen.c index 2cfe1fadf25..4ab547befc8 100644 --- a/src/gallium/auxiliary/util/u_screen.c +++ b/src/gallium/auxiliary/util/u_screen.c @@ -64,7 +64,6 @@ u_pipe_screen_get_param_defaults(struct pipe_screen *pscreen, case PIPE_CAP_BLEND_EQUATION_SEPARATE: case PIPE_CAP_FRAGMENT_SHADER_TEXTURE_LOD: case PIPE_CAP_FRAGMENT_SHADER_DERIVATIVES: - case PIPE_CAP_VERTEX_SHADER_SATURATE: case PIPE_CAP_MAX_STREAM_OUTPUT_BUFFERS: /* enables EXT_transform_feedback */ case PIPE_CAP_PRIMITIVE_RESTART: case PIPE_CAP_PRIMITIVE_RESTART_FIXED_INDEX: diff --git a/src/gallium/drivers/asahi/agx_pipe.c b/src/gallium/drivers/asahi/agx_pipe.c index 90d48055ca8..012c04314b6 100644 --- a/src/gallium/drivers/asahi/agx_pipe.c +++ b/src/gallium/drivers/asahi/agx_pipe.c @@ -724,7 +724,6 @@ agx_get_param(struct pipe_screen* pscreen, enum pipe_cap param) case PIPE_CAP_NPOT_TEXTURES: case PIPE_CAP_MIXED_COLOR_DEPTH_BITS: case PIPE_CAP_FRAGMENT_SHADER_TEXTURE_LOD: - case PIPE_CAP_VERTEX_SHADER_SATURATE: case PIPE_CAP_VERTEX_COLOR_UNCLAMPED: case PIPE_CAP_DEPTH_CLIP_DISABLE: case PIPE_CAP_MIXED_COLORBUFFER_FORMATS: diff --git a/src/gallium/drivers/crocus/crocus_screen.c b/src/gallium/drivers/crocus/crocus_screen.c index 9d36107cf01..748b602532c 100644 --- a/src/gallium/drivers/crocus/crocus_screen.c +++ b/src/gallium/drivers/crocus/crocus_screen.c @@ -148,7 +148,6 @@ crocus_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_BLEND_EQUATION_SEPARATE: case PIPE_CAP_FRAGMENT_SHADER_TEXTURE_LOD: case PIPE_CAP_FRAGMENT_SHADER_DERIVATIVES: - case PIPE_CAP_VERTEX_SHADER_SATURATE: case PIPE_CAP_PRIMITIVE_RESTART: case PIPE_CAP_PRIMITIVE_RESTART_FIXED_INDEX: case PIPE_CAP_INDEP_BLEND_ENABLE: diff --git a/src/gallium/drivers/d3d12/d3d12_screen.cpp b/src/gallium/drivers/d3d12/d3d12_screen.cpp index 697dd76f81e..351e58c0a5f 100644 --- a/src/gallium/drivers/d3d12/d3d12_screen.cpp +++ b/src/gallium/drivers/d3d12/d3d12_screen.cpp @@ -158,7 +158,6 @@ d3d12_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_INDEP_BLEND_FUNC: case PIPE_CAP_FRAGMENT_SHADER_TEXTURE_LOD: case PIPE_CAP_FRAGMENT_SHADER_DERIVATIVES: - case PIPE_CAP_VERTEX_SHADER_SATURATE: case PIPE_CAP_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION: case PIPE_CAP_VERTEX_BUFFER_STRIDE_4BYTE_ALIGNED_ONLY: case PIPE_CAP_RGB_OVERRIDE_DST_ALPHA_BLEND: diff --git a/src/gallium/drivers/etnaviv/etnaviv_screen.c b/src/gallium/drivers/etnaviv/etnaviv_screen.c index bf8c989d95b..222d3124b0b 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_screen.c +++ b/src/gallium/drivers/etnaviv/etnaviv_screen.c @@ -143,7 +143,6 @@ etna_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_FS_COORD_PIXEL_CENTER_HALF_INTEGER: case PIPE_CAP_FRAGMENT_SHADER_TEXTURE_LOD: case PIPE_CAP_FRAGMENT_SHADER_DERIVATIVES: - case PIPE_CAP_VERTEX_SHADER_SATURATE: case PIPE_CAP_TEXTURE_BARRIER: case PIPE_CAP_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION: case PIPE_CAP_VERTEX_BUFFER_OFFSET_4BYTE_ALIGNED_ONLY: diff --git a/src/gallium/drivers/freedreno/freedreno_screen.c b/src/gallium/drivers/freedreno/freedreno_screen.c index b698bd64844..2a09404ddd9 100644 --- a/src/gallium/drivers/freedreno/freedreno_screen.c +++ b/src/gallium/drivers/freedreno/freedreno_screen.c @@ -248,7 +248,6 @@ fd_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_FRAGMENT_SHADER_TEXTURE_LOD: case PIPE_CAP_FRAGMENT_SHADER_DERIVATIVES: - case PIPE_CAP_VERTEX_SHADER_SATURATE: case PIPE_CAP_PRIMITIVE_RESTART: case PIPE_CAP_PRIMITIVE_RESTART_FIXED_INDEX: case PIPE_CAP_VS_INSTANCEID: diff --git a/src/gallium/drivers/iris/iris_screen.c b/src/gallium/drivers/iris/iris_screen.c index 3abe5a9e06e..43ec49ab92f 100644 --- a/src/gallium/drivers/iris/iris_screen.c +++ b/src/gallium/drivers/iris/iris_screen.c @@ -203,7 +203,6 @@ iris_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_BLEND_EQUATION_SEPARATE: case PIPE_CAP_FRAGMENT_SHADER_TEXTURE_LOD: case PIPE_CAP_FRAGMENT_SHADER_DERIVATIVES: - case PIPE_CAP_VERTEX_SHADER_SATURATE: case PIPE_CAP_PRIMITIVE_RESTART: case PIPE_CAP_PRIMITIVE_RESTART_FIXED_INDEX: case PIPE_CAP_INDEP_BLEND_ENABLE: diff --git a/src/gallium/drivers/llvmpipe/lp_screen.c b/src/gallium/drivers/llvmpipe/lp_screen.c index f653f1e26fb..daf17ae8275 100644 --- a/src/gallium/drivers/llvmpipe/lp_screen.c +++ b/src/gallium/drivers/llvmpipe/lp_screen.c @@ -125,7 +125,6 @@ llvmpipe_get_param(struct pipe_screen *screen, enum pipe_cap param) return 1; case PIPE_CAP_FRAGMENT_SHADER_TEXTURE_LOD: case PIPE_CAP_FRAGMENT_SHADER_DERIVATIVES: - case PIPE_CAP_VERTEX_SHADER_SATURATE: return 1; case PIPE_CAP_MAX_DUAL_SOURCE_RENDER_TARGETS: return 1; diff --git a/src/gallium/drivers/nouveau/nv30/nv30_screen.c b/src/gallium/drivers/nouveau/nv30/nv30_screen.c index a4739e00b1c..808ca653ffe 100644 --- a/src/gallium/drivers/nouveau/nv30/nv30_screen.c +++ b/src/gallium/drivers/nouveau/nv30/nv30_screen.c @@ -124,7 +124,6 @@ nv30_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_MAX_DUAL_SOURCE_RENDER_TARGETS: case PIPE_CAP_FRAGMENT_SHADER_TEXTURE_LOD: case PIPE_CAP_FRAGMENT_SHADER_DERIVATIVES: - case PIPE_CAP_VERTEX_SHADER_SATURATE: case PIPE_CAP_INDEP_BLEND_ENABLE: case PIPE_CAP_INDEP_BLEND_FUNC: case PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS: diff --git a/src/gallium/drivers/nouveau/nv50/nv50_screen.c b/src/gallium/drivers/nouveau/nv50/nv50_screen.c index 9c2ff9d8c62..5564cf61a2e 100644 --- a/src/gallium/drivers/nouveau/nv50/nv50_screen.c +++ b/src/gallium/drivers/nouveau/nv50/nv50_screen.c @@ -209,7 +209,6 @@ nv50_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_POINT_SPRITE: case PIPE_CAP_FRAGMENT_SHADER_TEXTURE_LOD: case PIPE_CAP_FRAGMENT_SHADER_DERIVATIVES: - case PIPE_CAP_VERTEX_SHADER_SATURATE: case PIPE_CAP_FRAGMENT_COLOR_CLAMPED: case PIPE_CAP_VERTEX_COLOR_UNCLAMPED: case PIPE_CAP_VERTEX_COLOR_CLAMPED: diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c index 65e7dc66983..190e0420de3 100644 --- a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c @@ -230,7 +230,6 @@ nvc0_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_TGSI_TEXCOORD: case PIPE_CAP_FRAGMENT_SHADER_TEXTURE_LOD: case PIPE_CAP_FRAGMENT_SHADER_DERIVATIVES: - case PIPE_CAP_VERTEX_SHADER_SATURATE: case PIPE_CAP_FRAGMENT_COLOR_CLAMPED: case PIPE_CAP_VERTEX_COLOR_UNCLAMPED: case PIPE_CAP_VERTEX_COLOR_CLAMPED: diff --git a/src/gallium/drivers/panfrost/pan_screen.c b/src/gallium/drivers/panfrost/pan_screen.c index 5422c1900a5..6e3f380f026 100644 --- a/src/gallium/drivers/panfrost/pan_screen.c +++ b/src/gallium/drivers/panfrost/pan_screen.c @@ -109,7 +109,6 @@ panfrost_get_param(struct pipe_screen *screen, enum pipe_cap param) case PIPE_CAP_NPOT_TEXTURES: case PIPE_CAP_MIXED_COLOR_DEPTH_BITS: case PIPE_CAP_FRAGMENT_SHADER_TEXTURE_LOD: - case PIPE_CAP_VERTEX_SHADER_SATURATE: case PIPE_CAP_VERTEX_COLOR_UNCLAMPED: case PIPE_CAP_POINT_SPRITE: case PIPE_CAP_DEPTH_CLIP_DISABLE: diff --git a/src/gallium/drivers/r300/r300_screen.c b/src/gallium/drivers/r300/r300_screen.c index 72e937b7e45..b4cb0faa846 100644 --- a/src/gallium/drivers/r300/r300_screen.c +++ b/src/gallium/drivers/r300/r300_screen.c @@ -173,7 +173,6 @@ static int r300_get_param(struct pipe_screen* pscreen, enum pipe_cap param) case PIPE_CAP_MIXED_COLORBUFFER_FORMATS: case PIPE_CAP_FRAGMENT_SHADER_TEXTURE_LOD: case PIPE_CAP_FRAGMENT_SHADER_DERIVATIVES: - case PIPE_CAP_VERTEX_SHADER_SATURATE: return is_r500 ? 1 : 0; case PIPE_CAP_SHAREABLE_SHADERS: diff --git a/src/gallium/drivers/r600/r600_pipe.c b/src/gallium/drivers/r600/r600_pipe.c index b7b557c4c2d..dd52d2a9602 100644 --- a/src/gallium/drivers/r600/r600_pipe.c +++ b/src/gallium/drivers/r600/r600_pipe.c @@ -279,7 +279,6 @@ static int r600_get_param(struct pipe_screen* pscreen, enum pipe_cap param) case PIPE_CAP_FS_COORD_PIXEL_CENTER_HALF_INTEGER: case PIPE_CAP_FRAGMENT_SHADER_TEXTURE_LOD: case PIPE_CAP_FRAGMENT_SHADER_DERIVATIVES: - case PIPE_CAP_VERTEX_SHADER_SATURATE: case PIPE_CAP_SEAMLESS_CUBE_MAP: case PIPE_CAP_PRIMITIVE_RESTART: case PIPE_CAP_PRIMITIVE_RESTART_FIXED_INDEX: diff --git a/src/gallium/drivers/radeonsi/si_get.c b/src/gallium/drivers/radeonsi/si_get.c index ebae415aa07..99d0fdb682c 100644 --- a/src/gallium/drivers/radeonsi/si_get.c +++ b/src/gallium/drivers/radeonsi/si_get.c @@ -74,7 +74,6 @@ static int si_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_FS_COORD_PIXEL_CENTER_INTEGER: case PIPE_CAP_FRAGMENT_SHADER_TEXTURE_LOD: case PIPE_CAP_FRAGMENT_SHADER_DERIVATIVES: - case PIPE_CAP_VERTEX_SHADER_SATURATE: case PIPE_CAP_PRIMITIVE_RESTART: case PIPE_CAP_PRIMITIVE_RESTART_FIXED_INDEX: case PIPE_CAP_CONDITIONAL_RENDER: diff --git a/src/gallium/drivers/softpipe/sp_screen.c b/src/gallium/drivers/softpipe/sp_screen.c index e59ec44cef0..4becb8d18ef 100644 --- a/src/gallium/drivers/softpipe/sp_screen.c +++ b/src/gallium/drivers/softpipe/sp_screen.c @@ -113,7 +113,6 @@ softpipe_get_param(struct pipe_screen *screen, enum pipe_cap param) return 1; case PIPE_CAP_FRAGMENT_SHADER_TEXTURE_LOD: case PIPE_CAP_FRAGMENT_SHADER_DERIVATIVES: - case PIPE_CAP_VERTEX_SHADER_SATURATE: return 1; case PIPE_CAP_ANISOTROPIC_FILTER: return 1; diff --git a/src/gallium/drivers/svga/svga_screen.c b/src/gallium/drivers/svga/svga_screen.c index fd765ba9254..c05981f0933 100644 --- a/src/gallium/drivers/svga/svga_screen.c +++ b/src/gallium/drivers/svga/svga_screen.c @@ -298,7 +298,6 @@ svga_get_param(struct pipe_screen *screen, enum pipe_cap param) case PIPE_CAP_FRAGMENT_SHADER_TEXTURE_LOD: case PIPE_CAP_FRAGMENT_SHADER_DERIVATIVES: - case PIPE_CAP_VERTEX_SHADER_SATURATE: return 1; case PIPE_CAP_DEPTH_CLIP_DISABLE: diff --git a/src/gallium/drivers/v3d/v3d_screen.c b/src/gallium/drivers/v3d/v3d_screen.c index a079f2b2edc..080d599b176 100644 --- a/src/gallium/drivers/v3d/v3d_screen.c +++ b/src/gallium/drivers/v3d/v3d_screen.c @@ -127,7 +127,6 @@ v3d_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_VS_INSTANCEID: case PIPE_CAP_FRAGMENT_SHADER_TEXTURE_LOD: case PIPE_CAP_FRAGMENT_SHADER_DERIVATIVES: - case PIPE_CAP_VERTEX_SHADER_SATURATE: case PIPE_CAP_PRIMITIVE_RESTART_FIXED_INDEX: case PIPE_CAP_EMULATE_NONFIXED_PRIMITIVE_RESTART: case PIPE_CAP_PRIMITIVE_RESTART: diff --git a/src/gallium/drivers/virgl/virgl_screen.c b/src/gallium/drivers/virgl/virgl_screen.c index b85b8a33d44..7f797fcaaae 100644 --- a/src/gallium/drivers/virgl/virgl_screen.c +++ b/src/gallium/drivers/virgl/virgl_screen.c @@ -83,7 +83,6 @@ virgl_get_param(struct pipe_screen *screen, enum pipe_cap param) return 1; case PIPE_CAP_FRAGMENT_SHADER_TEXTURE_LOD: case PIPE_CAP_FRAGMENT_SHADER_DERIVATIVES: - case PIPE_CAP_VERTEX_SHADER_SATURATE: return 1; case PIPE_CAP_ANISOTROPIC_FILTER: return vscreen->caps.caps.v2.max_anisotropy > 1.0; diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c index a249bb9c4f1..618fd8466c6 100644 --- a/src/gallium/drivers/zink/zink_screen.c +++ b/src/gallium/drivers/zink/zink_screen.c @@ -548,7 +548,6 @@ zink_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_FRAGMENT_SHADER_TEXTURE_LOD: case PIPE_CAP_FRAGMENT_SHADER_DERIVATIVES: - case PIPE_CAP_VERTEX_SHADER_SATURATE: return 1; case PIPE_CAP_BLEND_EQUATION_SEPARATE: diff --git a/src/gallium/frontends/nine/adapter9.c b/src/gallium/frontends/nine/adapter9.c index 9853ba76ab5..8e9e26b7139 100644 --- a/src/gallium/frontends/nine/adapter9.c +++ b/src/gallium/frontends/nine/adapter9.c @@ -38,8 +38,7 @@ static bool has_sm3(struct pipe_screen *hal) { return hal->get_param(hal, PIPE_CAP_FRAGMENT_SHADER_TEXTURE_LOD) && - hal->get_param(hal, PIPE_CAP_FRAGMENT_SHADER_DERIVATIVES) && - hal->get_param(hal, PIPE_CAP_VERTEX_SHADER_SATURATE); + hal->get_param(hal, PIPE_CAP_FRAGMENT_SHADER_DERIVATIVES); } HRESULT diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h index b26cbf7cba6..d61e4b9f353 100644 --- a/src/gallium/include/pipe/p_defines.h +++ b/src/gallium/include/pipe/p_defines.h @@ -953,7 +953,6 @@ enum pipe_cap PIPE_CAP_TGSI_DIV, PIPE_CAP_FRAGMENT_SHADER_TEXTURE_LOD, PIPE_CAP_FRAGMENT_SHADER_DERIVATIVES, - PIPE_CAP_VERTEX_SHADER_SATURATE, PIPE_CAP_TEXTURE_SHADOW_LOD, PIPE_CAP_SHADER_SAMPLES_IDENTICAL, PIPE_CAP_IMAGE_ATOMIC_INC_WRAP, diff --git a/src/mesa/main/consts_exts.h b/src/mesa/main/consts_exts.h index 56ced3293c8..747912df598 100644 --- a/src/mesa/main/consts_exts.h +++ b/src/mesa/main/consts_exts.h @@ -313,7 +313,6 @@ struct gl_shader_compiler_options /** Driver-selectable options: */ GLboolean EmitNoCont; /**< Emit CONT opcode? */ GLboolean EmitNoMainReturn; /**< Emit CONT/RET opcodes? */ - GLboolean EmitNoSat; /**< Emit SAT opcodes? */ GLboolean LowerCombinedClipCullDistance; /** Lower gl_ClipDistance and * gl_CullDistance together from * float[8] to vec4[2] diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c index ffd50ec3e17..921e251e6e2 100644 --- a/src/mesa/state_tracker/st_context.c +++ b/src/mesa/state_tracker/st_context.c @@ -685,12 +685,6 @@ st_create_context_priv(struct gl_context *ctx, struct pipe_context *pipe, ctx->Const.NoClippingOnCopyTex = screen->get_param(screen, PIPE_CAP_NO_CLIP_ON_COPY_TEX); - /* For vertex shaders, make sure not to emit saturate when SM 3.0 - * is not supported - */ - ctx->Const.ShaderCompilerOptions[MESA_SHADER_VERTEX].EmitNoSat = - !screen->get_param(screen, PIPE_CAP_VERTEX_SHADER_SATURATE); - ctx->Const.ShaderCompilerOptions[MESA_SHADER_VERTEX].PositionAlwaysInvariant = options->vs_position_always_invariant; ctx->Const.ShaderCompilerOptions[MESA_SHADER_TESS_EVAL].PositionAlwaysPrecise = options->vs_position_always_precise; diff --git a/src/mesa/state_tracker/st_glsl_to_ir.cpp b/src/mesa/state_tracker/st_glsl_to_ir.cpp index d8333bb44af..d8242114c9b 100644 --- a/src/mesa/state_tracker/st_glsl_to_ir.cpp +++ b/src/mesa/state_tracker/st_glsl_to_ir.cpp @@ -112,7 +112,6 @@ link_shader(struct gl_context *ctx, struct gl_shader_program *prog) BORROW_TO_ARITH | (have_dround ? 0 : DOPS_TO_DFRAC) | (!ctx->Const.NativeIntegers ? INT_DIV_TO_MUL_RCP : 0) | - (options->EmitNoSat ? SAT_TO_CLAMP : 0) | (ctx->Const.ForceGLSLAbsSqrt ? SQRT_TO_ABS_SQRT : 0) | /* Assume that if ARB_gpu_shader5 is not supported * then all of the extended integer functions need