gallium,mesa: replace get_shader_param with pipe_shader_caps access
Use command:
find . -type d -path "./.git" -prune -o -type f -exec sed -i -E ':a;N;$!ba;s/->get_shader_param\(([[:space:]]*[^,]*),([[:space:]]*)([^,]*),([[:space:]]*)PIPE_SHADER_CAP_([A-Za-z0-9_]+)\)/->shader_caps[\3].\L\5/g' {} +
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Acked-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33176>
diff --git a/src/gallium/auxiliary/cso_cache/cso_context.c b/src/gallium/auxiliary/cso_cache/cso_context.c
index 92681ca..93bb66c 100644
--- a/src/gallium/auxiliary/cso_cache/cso_context.c
+++ b/src/gallium/auxiliary/cso_cache/cso_context.c
@@ -312,26 +312,21 @@
/* Enable for testing: */
if (0) cso_set_maximum_cache_size(&ctx->cache, 4);
- if (pipe->screen->get_shader_param(pipe->screen, PIPE_SHADER_GEOMETRY,
- PIPE_SHADER_CAP_MAX_INSTRUCTIONS) > 0) {
+ if (pipe->screen->shader_caps[PIPE_SHADER_GEOMETRY].max_instructions > 0) {
ctx->has_geometry_shader = true;
}
- if (pipe->screen->get_shader_param(pipe->screen, PIPE_SHADER_TESS_CTRL,
- PIPE_SHADER_CAP_MAX_INSTRUCTIONS) > 0) {
+ if (pipe->screen->shader_caps[PIPE_SHADER_TESS_CTRL].max_instructions > 0) {
ctx->has_tessellation = true;
}
- if (pipe->screen->get_shader_param(pipe->screen, PIPE_SHADER_COMPUTE,
- PIPE_SHADER_CAP_MAX_INSTRUCTIONS) > 0) {
+ if (pipe->screen->shader_caps[PIPE_SHADER_COMPUTE].max_instructions > 0) {
int supported_irs =
- pipe->screen->get_shader_param(pipe->screen, PIPE_SHADER_COMPUTE,
- PIPE_SHADER_CAP_SUPPORTED_IRS);
+ pipe->screen->shader_caps[PIPE_SHADER_COMPUTE].supported_irs;
if (supported_irs & ((1 << PIPE_SHADER_IR_TGSI) |
(1 << PIPE_SHADER_IR_NIR))) {
ctx->has_compute_shader = true;
}
}
- if (pipe->screen->get_shader_param(pipe->screen, PIPE_SHADER_MESH,
- PIPE_SHADER_CAP_MAX_INSTRUCTIONS) > 0) {
+ if (pipe->screen->shader_caps[PIPE_SHADER_MESH].max_instructions > 0) {
ctx->has_task_mesh_shader = true;
}
if (pipe->screen->caps.max_stream_output_buffers != 0) {
@@ -343,8 +338,7 @@
ctx->sampler_format = true;
ctx->max_fs_samplerviews =
- pipe->screen->get_shader_param(pipe->screen, PIPE_SHADER_FRAGMENT,
- PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS);
+ pipe->screen->shader_caps[PIPE_SHADER_FRAGMENT].max_texture_samplers;
ctx->max_sampler_seen = -1;
return &ctx->base;
@@ -394,16 +388,11 @@
break;
}
- int maxsam = scr->get_shader_param(scr, sh,
- PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS);
- int maxview = scr->get_shader_param(scr, sh,
- PIPE_SHADER_CAP_MAX_SAMPLER_VIEWS);
- int maxssbo = scr->get_shader_param(scr, sh,
- PIPE_SHADER_CAP_MAX_SHADER_BUFFERS);
- int maxcb = scr->get_shader_param(scr, sh,
- PIPE_SHADER_CAP_MAX_CONST_BUFFERS);
- int maximg = scr->get_shader_param(scr, sh,
- PIPE_SHADER_CAP_MAX_SHADER_IMAGES);
+ int maxsam = scr->shader_caps[sh].max_texture_samplers;
+ int maxview = scr->shader_caps[sh].max_sampler_views;
+ int maxssbo = scr->shader_caps[sh].max_shader_buffers;
+ int maxcb = scr->shader_caps[sh].max_const_buffers;
+ int maximg = scr->shader_caps[sh].max_shader_images;
assert(maxsam <= PIPE_MAX_SAMPLERS);
assert(maxview <= PIPE_MAX_SHADER_SAMPLER_VIEWS);
assert(maxssbo <= PIPE_MAX_SHADER_BUFFERS);
diff --git a/src/gallium/auxiliary/draw/draw_vs.c b/src/gallium/auxiliary/draw/draw_vs.c
index 866dbd6..d820c46 100644
--- a/src/gallium/auxiliary/draw/draw_vs.c
+++ b/src/gallium/auxiliary/draw/draw_vs.c
@@ -70,8 +70,7 @@
if (draw->pt.middle.llvm) {
struct pipe_screen *screen = draw->pipe->screen;
if (shader->type == PIPE_SHADER_IR_NIR &&
- !screen->get_shader_param(screen, PIPE_SHADER_VERTEX,
- PIPE_SHADER_CAP_INTEGERS)) {
+ !screen->shader_caps[PIPE_SHADER_VERTEX].integers) {
state.type = PIPE_SHADER_IR_TGSI;
state.tokens = nir_to_tgsi(shader->ir.nir, screen);
is_allocated = true;
diff --git a/src/gallium/auxiliary/nir/nir_to_tgsi.c b/src/gallium/auxiliary/nir/nir_to_tgsi.c
index 20b33f8..9fcffdf 100644
--- a/src/gallium/auxiliary/nir/nir_to_tgsi.c
+++ b/src/gallium/auxiliary/nir/nir_to_tgsi.c
@@ -3304,8 +3304,7 @@
indirect_mask |= nir_var_shader_out;
}
- if (!screen->get_shader_param(screen, pipe_stage,
- PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR)) {
+ if (!screen->shader_caps[pipe_stage].indirect_temp_addr) {
indirect_mask |= nir_var_function_temp;
}
@@ -3319,8 +3318,7 @@
bool progress;
unsigned pipe_stage = pipe_shader_type_from_mesa(s->info.stage);
unsigned control_flow_depth =
- screen->get_shader_param(screen, pipe_stage,
- PIPE_SHADER_CAP_MAX_CONTROL_FLOW_DEPTH);
+ screen->shader_caps[pipe_stage].max_control_flow_depth;
do {
progress = false;
@@ -3679,8 +3677,7 @@
{
const struct nir_shader_compiler_options *options = s->options;
bool lower_fsqrt =
- !screen->get_shader_param(screen, pipe_shader_type_from_mesa(s->info.stage),
- PIPE_SHADER_CAP_TGSI_SQRT_SUPPORTED);
+ !screen->shader_caps[pipe_shader_type_from_mesa(s->info.stage)].tgsi_sqrt_supported;
bool force_indirect_unrolling_sampler =
screen->caps.glsl_feature_level < 400;
@@ -3882,9 +3879,7 @@
struct ntt_compile *c;
const void *tgsi_tokens;
nir_variable_mode no_indirects_mask = ntt_no_indirects_mask(s, screen);
- bool native_integers = screen->get_shader_param(screen,
- pipe_shader_type_from_mesa(s->info.stage),
- PIPE_SHADER_CAP_INTEGERS);
+ bool native_integers = screen->shader_caps[pipe_shader_type_from_mesa(s->info.stage)].integers;
const struct nir_shader_compiler_options *original_options = s->options;
ntt_fix_nir_options(screen, s, options);
@@ -3966,9 +3961,7 @@
NIR_PASS_V(s, nir_opt_combine_barriers, NULL, NULL);
- if (screen->get_shader_param(screen,
- pipe_shader_type_from_mesa(s->info.stage),
- PIPE_SHADER_CAP_INTEGERS)) {
+ if (screen->shader_caps[pipe_shader_type_from_mesa(s->info.stage)].integers) {
NIR_PASS_V(s, nir_lower_bool_to_int32);
} else {
NIR_PASS_V(s, nir_lower_int_to_float);
diff --git a/src/gallium/auxiliary/nir/tgsi_to_nir.c b/src/gallium/auxiliary/nir/tgsi_to_nir.c
index 457a9bd..e0781c5 100644
--- a/src/gallium/auxiliary/nir/tgsi_to_nir.c
+++ b/src/gallium/auxiliary/nir/tgsi_to_nir.c
@@ -2215,7 +2215,7 @@
c->cap_face_is_sysval = screen->caps.fs_face_is_integer_sysval;
c->cap_position_is_sysval = screen->caps.fs_position_is_sysval;
c->cap_point_is_sysval = screen->caps.fs_point_is_sysval;
- c->cap_integers = screen->get_shader_param(screen, c->scan->processor, PIPE_SHADER_CAP_INTEGERS);
+ c->cap_integers = screen->shader_caps[c->scan->processor].integers;
c->cap_tg4_component_in_swizzle =
screen->caps.tgsi_tg4_component_in_swizzle;
}
diff --git a/src/gallium/auxiliary/tgsi/tgsi_ureg.c b/src/gallium/auxiliary/tgsi/tgsi_ureg.c
index fdbc372..89d3ed2 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_ureg.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_ureg.c
@@ -2244,8 +2244,7 @@
ureg->processor = processor;
ureg->supports_any_inout_decl_range =
screen &&
- screen->get_shader_param(screen, processor,
- PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE) != 0;
+ screen->shader_caps[processor].tgsi_any_inout_decl_range;
ureg->next_shader_processor = -1;
for (i = 0; i < ARRAY_SIZE(ureg->properties); i++)
diff --git a/src/gallium/auxiliary/util/u_blitter.c b/src/gallium/auxiliary/util/u_blitter.c
index 4abd16e..e19b59e 100644
--- a/src/gallium/auxiliary/util/u_blitter.c
+++ b/src/gallium/auxiliary/util/u_blitter.c
@@ -194,12 +194,10 @@
ctx->base.saved_num_so_targets = ~0;
ctx->has_geometry_shader =
- pipe->screen->get_shader_param(pipe->screen, PIPE_SHADER_GEOMETRY,
- PIPE_SHADER_CAP_MAX_INSTRUCTIONS) > 0;
+ pipe->screen->shader_caps[PIPE_SHADER_GEOMETRY].max_instructions > 0;
ctx->has_tessellation =
- pipe->screen->get_shader_param(pipe->screen, PIPE_SHADER_TESS_CTRL,
- PIPE_SHADER_CAP_MAX_INSTRUCTIONS) > 0;
+ pipe->screen->shader_caps[PIPE_SHADER_TESS_CTRL].max_instructions > 0;
ctx->has_stream_out = pipe->screen->caps.max_stream_output_buffers != 0;
diff --git a/src/gallium/auxiliary/util/u_screen.c b/src/gallium/auxiliary/util/u_screen.c
index a4b7ec0..b4803b8 100644
--- a/src/gallium/auxiliary/util/u_screen.c
+++ b/src/gallium/auxiliary/util/u_screen.c
@@ -163,8 +163,7 @@
caps->allow_dynamic_vao_fastpath = true;
caps->max_constant_buffer_size =
- pscreen->get_shader_param(pscreen, PIPE_SHADER_FRAGMENT,
- PIPE_SHADER_CAP_MAX_CONST_BUFFER0_SIZE);
+ pscreen->shader_caps[PIPE_SHADER_FRAGMENT].max_const_buffer0_size;
/* accel=0: on CPU, always disabled
* accel>0: on GPU, enable by default, user can disable it manually
@@ -173,11 +172,9 @@
caps->hardware_gl_select =
!!accel && debug_get_bool_option("MESA_HW_ACCEL_SELECT", accel > 0) &&
/* internal geometry shader need indirect array access */
- pscreen->get_shader_param(pscreen, PIPE_SHADER_GEOMETRY,
- PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR) &&
+ pscreen->shader_caps[PIPE_SHADER_GEOMETRY].indirect_temp_addr &&
/* internal geometry shader need SSBO support */
- pscreen->get_shader_param(pscreen, PIPE_SHADER_GEOMETRY,
- PIPE_SHADER_CAP_MAX_SHADER_BUFFERS);
+ pscreen->shader_caps[PIPE_SHADER_GEOMETRY].max_shader_buffers;
caps->query_timestamp_bits = 64;
diff --git a/src/gallium/auxiliary/util/u_threaded_context.c b/src/gallium/auxiliary/util/u_threaded_context.c
index 2c644b6..037b1e7 100644
--- a/src/gallium/auxiliary/util/u_threaded_context.c
+++ b/src/gallium/auxiliary/util/u_threaded_context.c
@@ -5303,17 +5303,13 @@
/* If you have different limits in each shader stage, set the maximum. */
struct pipe_screen *screen = pipe->screen;;
tc->max_const_buffers =
- screen->get_shader_param(screen, PIPE_SHADER_FRAGMENT,
- PIPE_SHADER_CAP_MAX_CONST_BUFFERS);
+ screen->shader_caps[PIPE_SHADER_FRAGMENT].max_const_buffers;
tc->max_shader_buffers =
- screen->get_shader_param(screen, PIPE_SHADER_FRAGMENT,
- PIPE_SHADER_CAP_MAX_SHADER_BUFFERS);
+ screen->shader_caps[PIPE_SHADER_FRAGMENT].max_shader_buffers;
tc->max_images =
- screen->get_shader_param(screen, PIPE_SHADER_FRAGMENT,
- PIPE_SHADER_CAP_MAX_SHADER_IMAGES);
+ screen->shader_caps[PIPE_SHADER_FRAGMENT].max_shader_images;
tc->max_samplers =
- screen->get_shader_param(screen, PIPE_SHADER_FRAGMENT,
- PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS);
+ screen->shader_caps[PIPE_SHADER_FRAGMENT].max_texture_samplers;
tc->base.set_context_param = tc_set_context_param; /* always set this */
diff --git a/src/gallium/auxiliary/vl/vl_bicubic_filter.c b/src/gallium/auxiliary/vl/vl_bicubic_filter.c
index 582aec7..42e0d69 100644
--- a/src/gallium/auxiliary/vl/vl_bicubic_filter.c
+++ b/src/gallium/auxiliary/vl/vl_bicubic_filter.c
@@ -161,8 +161,7 @@
struct ureg_dst t;
unsigned i;
- if (screen->get_shader_param(
- screen, PIPE_SHADER_FRAGMENT, PIPE_SHADER_CAP_MAX_TEMPS) < 23) {
+ if (screen->shader_caps[PIPE_SHADER_FRAGMENT].max_temps < 23) {
return NULL;
}
diff --git a/src/gallium/auxiliary/vl/vl_median_filter.c b/src/gallium/auxiliary/vl/vl_median_filter.c
index 978c58f..1d48cad 100644
--- a/src/gallium/auxiliary/vl/vl_median_filter.c
+++ b/src/gallium/auxiliary/vl/vl_median_filter.c
@@ -92,8 +92,7 @@
return NULL;
}
- if (num_offsets > screen->get_shader_param(
- screen, PIPE_SHADER_FRAGMENT, PIPE_SHADER_CAP_MAX_TEMPS)) {
+ if (num_offsets > screen->shader_caps[PIPE_SHADER_FRAGMENT].max_temps) {
FREE(t_array);
return NULL;
diff --git a/src/gallium/auxiliary/vl/vl_mpeg12_decoder.c b/src/gallium/auxiliary/vl/vl_mpeg12_decoder.c
index 8fc14e6..d81328e 100644
--- a/src/gallium/auxiliary/vl/vl_mpeg12_decoder.c
+++ b/src/gallium/auxiliary/vl/vl_mpeg12_decoder.c
@@ -968,10 +968,7 @@
nr_of_idct_render_targets = dec->context->screen->caps.max_render_targets;
- max_inst = dec->context->screen->get_shader_param
- (
- dec->context->screen, PIPE_SHADER_FRAGMENT, PIPE_SHADER_CAP_MAX_INSTRUCTIONS
- );
+ max_inst = dec->context->screen->shader_caps[PIPE_SHADER_FRAGMENT].max_instructions;
// Just assume we need 32 inst per render target, not 100% true, but should work in most cases
if (nr_of_idct_render_targets >= 4 && max_inst >= 32*4)
diff --git a/src/gallium/frontends/clover/core/device.cpp b/src/gallium/frontends/clover/core/device.cpp
index e01c884..f377e05 100644
--- a/src/gallium/frontends/clover/core/device.cpp
+++ b/src/gallium/frontends/clover/core/device.cpp
@@ -231,14 +231,12 @@
size_t
device::max_images_read() const {
- return pipe->get_shader_param(pipe, PIPE_SHADER_COMPUTE,
- PIPE_SHADER_CAP_MAX_SAMPLER_VIEWS);
+ return pipe->shader_caps[PIPE_SHADER_COMPUTE].max_sampler_views;
}
size_t
device::max_images_write() const {
- return pipe->get_shader_param(pipe, PIPE_SHADER_COMPUTE,
- PIPE_SHADER_CAP_MAX_SHADER_IMAGES);
+ return pipe->shader_caps[PIPE_SHADER_COMPUTE].max_shader_images;
}
size_t
@@ -263,8 +261,7 @@
cl_uint
device::max_samplers() const {
- return pipe->get_shader_param(pipe, PIPE_SHADER_COMPUTE,
- PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS);
+ return pipe->shader_caps[PIPE_SHADER_COMPUTE].max_texture_samplers;
}
cl_ulong
@@ -287,14 +284,12 @@
cl_ulong
device::max_const_buffer_size() const {
- return pipe->get_shader_param(pipe, PIPE_SHADER_COMPUTE,
- PIPE_SHADER_CAP_MAX_CONST_BUFFER0_SIZE);
+ return pipe->shader_caps[PIPE_SHADER_COMPUTE].max_const_buffer0_size;
}
cl_uint
device::max_const_buffers() const {
- return pipe->get_shader_param(pipe, PIPE_SHADER_COMPUTE,
- PIPE_SHADER_CAP_MAX_CONST_BUFFERS);
+ return pipe->shader_caps[PIPE_SHADER_COMPUTE].max_const_buffers;
}
size_t
@@ -359,14 +354,12 @@
bool
device::has_halves() const {
- return pipe->get_shader_param(pipe, PIPE_SHADER_COMPUTE,
- PIPE_SHADER_CAP_FP16);
+ return pipe->shader_caps[PIPE_SHADER_COMPUTE].fp16;
}
bool
device::has_int64_atomics() const {
- return pipe->get_shader_param(pipe, PIPE_SHADER_COMPUTE,
- PIPE_SHADER_CAP_INT64_ATOMICS);
+ return pipe->shader_caps[PIPE_SHADER_COMPUTE].int64_atomics;
}
bool
@@ -488,8 +481,7 @@
bool
device::supports_ir(enum pipe_shader_ir ir) const {
- return pipe->get_shader_param(pipe, PIPE_SHADER_COMPUTE,
- PIPE_SHADER_CAP_SUPPORTED_IRS) & (1 << ir);
+ return pipe->shader_caps[PIPE_SHADER_COMPUTE].supported_irs & (1 << ir);
}
std::vector<cl_name_version>
diff --git a/src/gallium/frontends/lavapipe/lvp_device.c b/src/gallium/frontends/lavapipe/lvp_device.c
index bf00aeb..5a58245 100644
--- a/src/gallium/frontends/lavapipe/lvp_device.c
+++ b/src/gallium/frontends/lavapipe/lvp_device.c
@@ -340,8 +340,8 @@
.fullDrawIndexUint32 = true,
.imageCubeArray = (pdevice->pscreen->caps.cube_map_array != 0),
.independentBlend = true,
- .geometryShader = (pdevice->pscreen->get_shader_param(pdevice->pscreen, MESA_SHADER_GEOMETRY, PIPE_SHADER_CAP_MAX_INSTRUCTIONS) != 0),
- .tessellationShader = (pdevice->pscreen->get_shader_param(pdevice->pscreen, MESA_SHADER_TESS_EVAL, PIPE_SHADER_CAP_MAX_INSTRUCTIONS) != 0),
+ .geometryShader = (pdevice->pscreen->shader_caps[MESA_SHADER_GEOMETRY].max_instructions != 0),
+ .tessellationShader = (pdevice->pscreen->shader_caps[MESA_SHADER_TESS_EVAL].max_instructions != 0),
.sampleRateShading = (pdevice->pscreen->caps.sample_shading != 0),
.dualSrcBlend = (pdevice->pscreen->caps.max_dual_source_render_targets != 0),
.logicOp = true,
@@ -362,7 +362,7 @@
.occlusionQueryPrecise = true,
.pipelineStatisticsQuery = true,
.vertexPipelineStoresAndAtomics = (MIN_VERTEX_PIPELINE_CAP(pdevice->pscreen, max_shader_buffers) != 0),
- .fragmentStoresAndAtomics = (pdevice->pscreen->get_shader_param(pdevice->pscreen, MESA_SHADER_FRAGMENT, PIPE_SHADER_CAP_MAX_SHADER_BUFFERS) != 0),
+ .fragmentStoresAndAtomics = (pdevice->pscreen->shader_caps[MESA_SHADER_FRAGMENT].max_shader_buffers != 0),
.shaderTessellationAndGeometryPointSize = true,
.shaderImageGatherExtended = true,
.shaderStorageImageExtendedFormats = (MIN_SHADER_CAP(pdevice->pscreen, max_shader_images) != 0),
@@ -409,7 +409,7 @@
.storagePushConstant8 = true,
.shaderBufferInt64Atomics = true,
.shaderSharedInt64Atomics = true,
- .shaderFloat16 = pdevice->pscreen->get_shader_param(pdevice->pscreen, MESA_SHADER_FRAGMENT, PIPE_SHADER_CAP_FP16) != 0,
+ .shaderFloat16 = pdevice->pscreen->shader_caps[MESA_SHADER_FRAGMENT].fp16,
.shaderInt8 = true,
.descriptorIndexing = true,
@@ -867,10 +867,8 @@
.maxFragmentOutputAttachments = 8,
.maxFragmentDualSrcAttachments = 2,
.maxFragmentCombinedOutputResources = max_render_targets +
- device->pscreen->get_shader_param(device->pscreen, MESA_SHADER_FRAGMENT,
- PIPE_SHADER_CAP_MAX_SHADER_BUFFERS) +
- device->pscreen->get_shader_param(device->pscreen, MESA_SHADER_FRAGMENT,
- PIPE_SHADER_CAP_MAX_SHADER_IMAGES),
+ device->pscreen->shader_caps[MESA_SHADER_FRAGMENT].max_shader_buffers +
+ device->pscreen->shader_caps[MESA_SHADER_FRAGMENT].max_shader_images,
.maxComputeSharedMemorySize = max_local_size,
.maxComputeWorkGroupCount = { grid_size[0], grid_size[1], grid_size[2] },
.maxComputeWorkGroupInvocations = max_threads_per_block,
@@ -1295,7 +1293,7 @@
device->sync_types[2] = NULL;
device->vk.supported_sync_types = device->sync_types;
- device->max_images = device->pscreen->get_shader_param(device->pscreen, MESA_SHADER_FRAGMENT, PIPE_SHADER_CAP_MAX_SHADER_IMAGES);
+ device->max_images = device->pscreen->shader_caps[MESA_SHADER_FRAGMENT].max_shader_images;
device->vk.supported_extensions = lvp_device_extensions_supported;
#ifdef HAVE_LIBDRM
int dmabuf_bits = DRM_PRIME_CAP_EXPORT | DRM_PRIME_CAP_IMPORT;
diff --git a/src/gallium/frontends/nine/adapter9.c b/src/gallium/frontends/nine/adapter9.c
index cac44dd..4119c9f 100644
--- a/src/gallium/frontends/nine/adapter9.c
+++ b/src/gallium/frontends/nine/adapter9.c
@@ -57,33 +57,22 @@
/* checks minimum requirements, most are vs3/ps3 strict requirements */
if (!has_sm3(hal) ||
- hal->get_shader_param(hal, PIPE_SHADER_VERTEX,
- PIPE_SHADER_CAP_MAX_CONST_BUFFER0_SIZE) < 256 * sizeof(float[4]) ||
- hal->get_shader_param(hal, PIPE_SHADER_FRAGMENT,
- PIPE_SHADER_CAP_MAX_CONST_BUFFER0_SIZE) < 244 * sizeof(float[4]) ||
- hal->get_shader_param(hal, PIPE_SHADER_VERTEX,
- PIPE_SHADER_CAP_MAX_TEMPS) < 32 ||
- hal->get_shader_param(hal, PIPE_SHADER_FRAGMENT,
- PIPE_SHADER_CAP_MAX_TEMPS) < 32 ||
- hal->get_shader_param(hal, PIPE_SHADER_VERTEX,
- PIPE_SHADER_CAP_MAX_INPUTS) < 16 ||
- hal->get_shader_param(hal, PIPE_SHADER_FRAGMENT,
- PIPE_SHADER_CAP_MAX_INPUTS) < 10 ||
- hal->get_shader_param(hal, PIPE_SHADER_FRAGMENT,
- PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS) < 16) {
+ hal->shader_caps[PIPE_SHADER_VERTEX].max_const_buffer0_size < 256 * sizeof(float[4]) ||
+ hal->shader_caps[PIPE_SHADER_FRAGMENT].max_const_buffer0_size < 244 * sizeof(float[4]) ||
+ hal->shader_caps[PIPE_SHADER_VERTEX].max_temps < 32 ||
+ hal->shader_caps[PIPE_SHADER_FRAGMENT].max_temps < 32 ||
+ hal->shader_caps[PIPE_SHADER_VERTEX].max_inputs < 16 ||
+ hal->shader_caps[PIPE_SHADER_FRAGMENT].max_inputs < 10 ||
+ hal->shader_caps[PIPE_SHADER_FRAGMENT].max_texture_samplers < 16) {
ERR("Your device is not supported by Gallium Nine. Minimum requirement "
"is >= r500, >= nv50, >= i965\n");
return D3DERR_DRIVERINTERNALERROR;
}
/* for r500 */
- if (hal->get_shader_param(hal, PIPE_SHADER_VERTEX,
- PIPE_SHADER_CAP_MAX_CONST_BUFFER0_SIZE) < 276 * sizeof(float[4]) || /* we put bool and int constants with float constants */
- hal->get_shader_param(hal, PIPE_SHADER_VERTEX,
- PIPE_SHADER_CAP_MAX_TEMPS) < 40 || /* we use some more temp registers */
- hal->get_shader_param(hal, PIPE_SHADER_FRAGMENT,
- PIPE_SHADER_CAP_MAX_TEMPS) < 40 ||
- hal->get_shader_param(hal, PIPE_SHADER_FRAGMENT,
- PIPE_SHADER_CAP_MAX_INPUTS) < 20) /* we don't pack inputs as much as we could */
+ if (hal->shader_caps[PIPE_SHADER_VERTEX].max_const_buffer0_size < 276 * sizeof(float[4]) || /* we put bool and int constants with float constants */
+ hal->shader_caps[PIPE_SHADER_VERTEX].max_temps < 40 || /* we use some more temp registers */
+ hal->shader_caps[PIPE_SHADER_FRAGMENT].max_temps < 40 ||
+ hal->shader_caps[PIPE_SHADER_FRAGMENT].max_inputs < 20) /* we don't pack inputs as much as we could */
WARN_ONCE("Your device is at the limit of Gallium Nine requirements. Some games "
"may run into issues because requirements are too tight\n");
return D3D_OK;
@@ -323,7 +312,7 @@
}
if ((Usage & D3DUSAGE_QUERY_VERTEXTEXTURE) &&
- !screen->get_shader_param(screen, PIPE_SHADER_VERTEX, PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS))
+ !screen->shader_caps[PIPE_SHADER_VERTEX].max_texture_samplers)
return D3DERR_NOTAVAILABLE;
/* API hack because setting RT[0] to NULL is forbidden */
@@ -836,8 +825,7 @@
pCaps->MaxPrimitiveCount = 0x555555; /* <- wine, really 0xFFFFFFFF; */
pCaps->MaxVertexIndex = 0xFFFFFF; /* <- wine, really 0xFFFFFFFF */
pCaps->MaxStreams =
- _min(screen->get_shader_param(screen,
- PIPE_SHADER_VERTEX, PIPE_SHADER_CAP_MAX_INPUTS),
+ _min(screen->shader_caps[PIPE_SHADER_VERTEX].max_inputs,
16);
pCaps->MaxStreamStride = screen->caps.max_vertex_attrib_stride;
@@ -896,14 +884,11 @@
pCaps->VS20Caps.Caps = D3DVS20CAPS_PREDICATION;
pCaps->VS20Caps.DynamicFlowControlDepth = /* XXX is this dynamic ? */
- screen->get_shader_param(screen, PIPE_SHADER_VERTEX,
- PIPE_SHADER_CAP_MAX_CONTROL_FLOW_DEPTH);
+ screen->shader_caps[PIPE_SHADER_VERTEX].max_control_flow_depth;
pCaps->VS20Caps.NumTemps =
- screen->get_shader_param(screen, PIPE_SHADER_VERTEX,
- PIPE_SHADER_CAP_MAX_TEMPS);
+ screen->shader_caps[PIPE_SHADER_VERTEX].max_temps;
pCaps->VS20Caps.StaticFlowControlDepth = /* XXX is this static ? */
- screen->get_shader_param(screen, PIPE_SHADER_VERTEX,
- PIPE_SHADER_CAP_MAX_CONTROL_FLOW_DEPTH);
+ screen->shader_caps[PIPE_SHADER_VERTEX].max_control_flow_depth;
/* also check for values < 0, because get_shader_param may return unsigned */
if (pCaps->VS20Caps.DynamicFlowControlDepth > D3DVS20_MAX_DYNAMICFLOWCONTROLDEPTH
@@ -922,28 +907,20 @@
pCaps->PS20Caps.Caps = D3DPS20CAPS_ARBITRARYSWIZZLE |
D3DPS20CAPS_GRADIENTINSTRUCTIONS |
D3DPS20CAPS_PREDICATION;
- if (screen->get_shader_param(screen, PIPE_SHADER_FRAGMENT,
- PIPE_SHADER_CAP_MAX_TEX_INSTRUCTIONS) ==
- screen->get_shader_param(screen, PIPE_SHADER_FRAGMENT,
- PIPE_SHADER_CAP_MAX_INSTRUCTIONS))
+ if (screen->shader_caps[PIPE_SHADER_FRAGMENT].max_tex_instructions ==
+ screen->shader_caps[PIPE_SHADER_FRAGMENT].max_instructions)
pCaps->PS20Caps.Caps |= D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT;
- if (screen->get_shader_param(screen, PIPE_SHADER_FRAGMENT,
- PIPE_SHADER_CAP_MAX_TEX_INSTRUCTIONS) ==
- screen->get_shader_param(screen, PIPE_SHADER_FRAGMENT,
- PIPE_SHADER_CAP_MAX_TEX_INDIRECTIONS))
+ if (screen->shader_caps[PIPE_SHADER_FRAGMENT].max_tex_instructions ==
+ screen->shader_caps[PIPE_SHADER_FRAGMENT].max_tex_indirections)
pCaps->PS20Caps.Caps |= D3DPS20CAPS_NODEPENDENTREADLIMIT;
pCaps->PS20Caps.DynamicFlowControlDepth = /* XXX is this dynamic ? */
- screen->get_shader_param(screen, PIPE_SHADER_FRAGMENT,
- PIPE_SHADER_CAP_MAX_CONTROL_FLOW_DEPTH);
+ screen->shader_caps[PIPE_SHADER_FRAGMENT].max_control_flow_depth;
pCaps->PS20Caps.NumTemps =
- screen->get_shader_param(screen, PIPE_SHADER_FRAGMENT,
- PIPE_SHADER_CAP_MAX_TEMPS);
+ screen->shader_caps[PIPE_SHADER_FRAGMENT].max_temps;
pCaps->PS20Caps.StaticFlowControlDepth = /* XXX is this static ? */
- screen->get_shader_param(screen, PIPE_SHADER_FRAGMENT,
- PIPE_SHADER_CAP_MAX_CONTROL_FLOW_DEPTH);
+ screen->shader_caps[PIPE_SHADER_FRAGMENT].max_control_flow_depth;
pCaps->PS20Caps.NumInstructionSlots =
- screen->get_shader_param(screen, PIPE_SHADER_FRAGMENT,
- PIPE_SHADER_CAP_MAX_INSTRUCTIONS);
+ screen->shader_caps[PIPE_SHADER_FRAGMENT].max_instructions;
if (pCaps->PS20Caps.DynamicFlowControlDepth > D3DPS20_MAX_DYNAMICFLOWCONTROLDEPTH
|| pCaps->PS20Caps.DynamicFlowControlDepth < 0)
@@ -961,8 +938,7 @@
assert(pCaps->PS20Caps.NumInstructionSlots >= D3DPS20_MIN_NUMINSTRUCTIONSLOTS);
- if (screen->get_shader_param(screen, PIPE_SHADER_VERTEX,
- PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS))
+ if (screen->shader_caps[PIPE_SHADER_VERTEX].max_texture_samplers)
pCaps->VertexTextureFilterCaps = pCaps->TextureFilterCaps &
~(D3DPTFILTERCAPS_MIPFPOINT |
D3DPTFILTERCAPS_MIPFPOINT); /* XXX */
@@ -970,11 +946,9 @@
pCaps->VertexTextureFilterCaps = 0;
pCaps->MaxVertexShader30InstructionSlots =
- screen->get_shader_param(screen, PIPE_SHADER_VERTEX,
- PIPE_SHADER_CAP_MAX_INSTRUCTIONS);
+ screen->shader_caps[PIPE_SHADER_VERTEX].max_instructions;
pCaps->MaxPixelShader30InstructionSlots =
- screen->get_shader_param(screen, PIPE_SHADER_FRAGMENT,
- PIPE_SHADER_CAP_MAX_INSTRUCTIONS);
+ screen->shader_caps[PIPE_SHADER_FRAGMENT].max_instructions;
if (pCaps->MaxVertexShader30InstructionSlots > D3DMAX30SHADERINSTRUCTIONS)
pCaps->MaxVertexShader30InstructionSlots = D3DMAX30SHADERINSTRUCTIONS;
if (pCaps->MaxPixelShader30InstructionSlots > D3DMAX30SHADERINSTRUCTIONS)
diff --git a/src/gallium/frontends/nine/device9.c b/src/gallium/frontends/nine/device9.c
index b8fc154..3390f37 100644
--- a/src/gallium/frontends/nine/device9.c
+++ b/src/gallium/frontends/nine/device9.c
@@ -223,11 +223,9 @@
/* TODO: check if swvp is reset by device Resets */
if (This->may_swvp &&
- (This->screen->get_shader_param(This->screen, PIPE_SHADER_VERTEX,
- PIPE_SHADER_CAP_MAX_CONST_BUFFER0_SIZE)
+ (This->screen->shader_caps[PIPE_SHADER_VERTEX].max_const_buffer0_size
< (NINE_MAX_CONST_F_SWVP/2) * sizeof(float[4]) ||
- This->screen->get_shader_param(This->screen, PIPE_SHADER_VERTEX,
- PIPE_SHADER_CAP_MAX_CONST_BUFFERS) < 5)) {
+ This->screen->shader_caps[PIPE_SHADER_VERTEX].max_const_buffers < 5)) {
/* Note: We just go on, some apps never use the abilities of
* swvp, and just set more constants than allowed at init.
* Only cards we support that are affected are the r500 */
@@ -447,8 +445,7 @@
/* vs 3.0: >= 256 float constants, but for cards with exactly 256 slots,
* we have to take in some more slots for int and bool*/
- max_const_vs = _min(pScreen->get_shader_param(pScreen, PIPE_SHADER_VERTEX,
- PIPE_SHADER_CAP_MAX_CONST_BUFFER0_SIZE) /
+ max_const_vs = _min(pScreen->shader_caps[PIPE_SHADER_VERTEX].max_const_buffer0_size /
sizeof(float[4]),
NINE_MAX_CONST_ALL_VS);
/* ps 3.0: 224 float constants. All cards supported support at least
@@ -559,8 +556,8 @@
This->vertex_uploader = This->csmt_active ? This->pipe_secondary->stream_uploader : This->context.pipe->stream_uploader;
This->driver_caps.window_space_position_support = GET_PCAP(vs_window_space_position);
This->driver_caps.disabling_depth_clipping_support = GET_PCAP(depth_clip_disable);
- This->driver_caps.vs_integer = pScreen->get_shader_param(pScreen, PIPE_SHADER_VERTEX, PIPE_SHADER_CAP_INTEGERS);
- This->driver_caps.ps_integer = pScreen->get_shader_param(pScreen, PIPE_SHADER_FRAGMENT, PIPE_SHADER_CAP_INTEGERS);
+ This->driver_caps.vs_integer = pScreen->shader_caps[PIPE_SHADER_VERTEX].integers;
+ This->driver_caps.ps_integer = pScreen->shader_caps[PIPE_SHADER_FRAGMENT].integers;
This->driver_caps.offset_units_unscaled = GET_PCAP(polygon_offset_units_unscaled);
This->driver_caps.alpha_test_emulation = !GET_PCAP(alpha_test);
/* Always write pointsize output when the driver doesn't support point_size_per_vertex = 0.
diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c
index 37c565f..2e7a067 100644
--- a/src/mesa/state_tracker/st_context.c
+++ b/src/mesa/state_tracker/st_context.c
@@ -629,8 +629,7 @@
screen->caps.call_finalize_nir_in_linker;
st->has_hw_atomics =
- screen->get_shader_param(screen, PIPE_SHADER_FRAGMENT,
- PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTERS)
+ screen->shader_caps[PIPE_SHADER_FRAGMENT].max_hw_atomic_counters
? true : false;
st->validate_all_dirty_states =
diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c
index 4638306..9c9fd1e 100644
--- a/src/mesa/state_tracker/st_extensions.c
+++ b/src/mesa/state_tracker/st_extensions.c
@@ -219,29 +219,24 @@
}
pc->MaxTextureImageUnits =
- _min(screen->get_shader_param(screen, sh,
- PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS),
+ _min(screen->shader_caps[sh].max_texture_samplers,
MAX_TEXTURE_IMAGE_UNITS);
pc->MaxInstructions =
- screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_MAX_INSTRUCTIONS);
+ screen->shader_caps[sh].max_instructions;
pc->MaxAluInstructions =
- screen->get_shader_param(screen, sh,
- PIPE_SHADER_CAP_MAX_ALU_INSTRUCTIONS);
+ screen->shader_caps[sh].max_alu_instructions;
pc->MaxTexInstructions =
- screen->get_shader_param(screen, sh,
- PIPE_SHADER_CAP_MAX_TEX_INSTRUCTIONS);
+ screen->shader_caps[sh].max_tex_instructions;
pc->MaxTexIndirections =
- screen->get_shader_param(screen, sh,
- PIPE_SHADER_CAP_MAX_TEX_INDIRECTIONS);
+ screen->shader_caps[sh].max_tex_indirections;
pc->MaxAttribs =
- screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_MAX_INPUTS);
+ screen->shader_caps[sh].max_inputs;
pc->MaxTemps =
- screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_MAX_TEMPS);
+ screen->shader_caps[sh].max_temps;
pc->MaxUniformComponents =
- screen->get_shader_param(screen, sh,
- PIPE_SHADER_CAP_MAX_CONST_BUFFER0_SIZE) / 4;
+ screen->shader_caps[sh].max_const_buffer0_size / 4;
/* reserve space in the default-uniform for lowered state */
if (sh == PIPE_SHADER_VERTEX ||
@@ -269,14 +264,13 @@
*/
pc->MaxParameters = MIN2(pc->MaxUniformComponents / 4, 2048);
pc->MaxInputComponents =
- screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_MAX_INPUTS) * 4;
+ screen->shader_caps[sh].max_inputs * 4;
pc->MaxOutputComponents =
- screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_MAX_OUTPUTS) * 4;
+ screen->shader_caps[sh].max_outputs * 4;
pc->MaxUniformBlocks =
- screen->get_shader_param(screen, sh,
- PIPE_SHADER_CAP_MAX_CONST_BUFFERS);
+ screen->shader_caps[sh].max_const_buffers;
if (pc->MaxUniformBlocks)
pc->MaxUniformBlocks -= 1; /* The first one is for ordinary uniforms. */
pc->MaxUniformBlocks = _min(pc->MaxUniformBlocks, MAX_UNIFORM_BUFFERS);
@@ -286,17 +280,16 @@
(uint64_t)c->MaxUniformBlockSize / 4 * pc->MaxUniformBlocks;
pc->MaxShaderStorageBlocks =
- screen->get_shader_param(screen, sh,
- PIPE_SHADER_CAP_MAX_SHADER_BUFFERS);
+ screen->shader_caps[sh].max_shader_buffers;
- temp = screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTERS);
+ temp = screen->shader_caps[sh].max_hw_atomic_counters;
if (temp) {
/*
* for separate atomic counters get the actual hw limits
* per stage on atomic counters and buffers
*/
pc->MaxAtomicCounters = temp;
- pc->MaxAtomicBuffers = screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTER_BUFFERS);
+ pc->MaxAtomicBuffers = screen->shader_caps[sh].max_hw_atomic_counter_buffers;
} else if (pc->MaxShaderStorageBlocks) {
pc->MaxAtomicCounters = MAX_ATOMIC_COUNTERS;
/*
@@ -307,8 +300,7 @@
pc->MaxShaderStorageBlocks -= pc->MaxAtomicBuffers;
}
pc->MaxImageUniforms =
- _min(screen->get_shader_param(screen, sh,
- PIPE_SHADER_CAP_MAX_SHADER_IMAGES),
+ _min(screen->shader_caps[sh].max_shader_images,
MAX_IMAGE_UNIFORMS);
/* Gallium doesn't really care about local vs. env parameters so use the
@@ -317,20 +309,20 @@
pc->MaxLocalParams = MIN2(pc->MaxParameters, MAX_PROGRAM_LOCAL_PARAMS);
pc->MaxEnvParams = MIN2(pc->MaxParameters, MAX_PROGRAM_ENV_PARAMS);
- if (screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_INTEGERS)) {
+ if (screen->shader_caps[sh].integers) {
pc->LowInt.RangeMin = 31;
pc->LowInt.RangeMax = 30;
pc->LowInt.Precision = 0;
pc->MediumInt = pc->HighInt = pc->LowInt;
- if (screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_INT16)) {
+ if (screen->shader_caps[sh].int16) {
pc->LowInt.RangeMin = 15;
pc->LowInt.RangeMax = 14;
pc->MediumInt = pc->LowInt;
}
}
- if (screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_FP16)) {
+ if (screen->shader_caps[sh].fp16) {
pc->LowFloat.RangeMin = 15;
pc->LowFloat.RangeMax = 15;
pc->LowFloat.Precision = 10;
@@ -339,22 +331,18 @@
/* TODO: make these more fine-grained if anyone needs it */
options->MaxIfDepth =
- screen->get_shader_param(screen, sh,
- PIPE_SHADER_CAP_MAX_CONTROL_FLOW_DEPTH);
+ screen->shader_caps[sh].max_control_flow_depth;
options->EmitNoMainReturn =
- !screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_SUBROUTINES);
+ !screen->shader_caps[sh].subroutines;
options->EmitNoCont =
- !screen->get_shader_param(screen, sh,
- PIPE_SHADER_CAP_CONT_SUPPORTED);
+ !screen->shader_caps[sh].cont_supported;
options->EmitNoIndirectTemp =
- !screen->get_shader_param(screen, sh,
- PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR);
+ !screen->shader_caps[sh].indirect_temp_addr;
options->EmitNoIndirectUniform =
- !screen->get_shader_param(screen, sh,
- PIPE_SHADER_CAP_INDIRECT_CONST_ADDR);
+ !screen->shader_caps[sh].indirect_const_addr;
if (pc->MaxInstructions &&
(options->EmitNoIndirectUniform || pc->MaxUniformBlocks < 12)) {
@@ -369,15 +357,15 @@
}
options->LowerPrecisionFloat16 =
- screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_FP16);
+ screen->shader_caps[sh].fp16;
options->LowerPrecisionDerivatives =
- screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_FP16_DERIVATIVES);
+ screen->shader_caps[sh].fp16_derivatives;
options->LowerPrecisionInt16 =
- screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_INT16);
+ screen->shader_caps[sh].int16;
options->LowerPrecisionConstants =
- screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_GLSL_16BIT_CONSTS);
+ screen->shader_caps[sh].glsl_16bit_consts;
options->LowerPrecisionFloat16Uniforms =
- screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_FP16_CONST_BUFFERS);
+ screen->shader_caps[sh].fp16_const_buffers;
}
c->MaxUserAssignableUniformLocations =
@@ -1285,10 +1273,8 @@
}
} else {
/* Optional integer support for GLSL 1.2. */
- if (screen->get_shader_param(screen, PIPE_SHADER_VERTEX,
- PIPE_SHADER_CAP_INTEGERS) &&
- screen->get_shader_param(screen, PIPE_SHADER_FRAGMENT,
- PIPE_SHADER_CAP_INTEGERS)) {
+ if (screen->shader_caps[PIPE_SHADER_VERTEX].integers &&
+ screen->shader_caps[PIPE_SHADER_FRAGMENT].integers) {
consts->NativeIntegers = GL_TRUE;
extensions->EXT_shader_integer_mix = GL_TRUE;
@@ -1315,16 +1301,14 @@
/* Below are the cases which cannot be moved into tables easily. */
/* The compatibility profile also requires GLSLVersionCompat >= 400. */
- if (screen->get_shader_param(screen, PIPE_SHADER_TESS_CTRL,
- PIPE_SHADER_CAP_MAX_INSTRUCTIONS) > 0 &&
+ if (screen->shader_caps[PIPE_SHADER_TESS_CTRL].max_instructions > 0 &&
(api != API_OPENGL_COMPAT || consts->GLSLVersionCompat >= 400)) {
extensions->ARB_tessellation_shader = GL_TRUE;
}
/* OES_geometry_shader requires instancing */
if ((GLSLVersion >= 400 || ESSLVersion >= 310) &&
- screen->get_shader_param(screen, PIPE_SHADER_GEOMETRY,
- PIPE_SHADER_CAP_MAX_INSTRUCTIONS) > 0 &&
+ screen->shader_caps[PIPE_SHADER_GEOMETRY].max_instructions > 0 &&
consts->MaxGeometryShaderInvocations >= 32) {
extensions->OES_geometry_shader = GL_TRUE;
}
@@ -1556,8 +1540,7 @@
* prefer to disable varying packing rather than run the risk of varying
* packing preventing a shader from running.
*/
- if (screen->get_shader_param(screen, PIPE_SHADER_FRAGMENT,
- PIPE_SHADER_CAP_MAX_TEX_INDIRECTIONS) <= 8) {
+ if (screen->shader_caps[PIPE_SHADER_FRAGMENT].max_tex_indirections <= 8) {
/* We can't disable varying packing if transform feedback is available,
* because transform feedback code assumes a packed varying layout.
*/
@@ -1622,8 +1605,7 @@
extensions->ARB_uniform_buffer_object &&
(extensions->NV_primitive_restart ||
consts->PrimitiveRestartFixedIndex) &&
- screen->get_shader_param(screen, PIPE_SHADER_VERTEX,
- PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS) >= 16 &&
+ screen->shader_caps[PIPE_SHADER_VERTEX].max_texture_samplers >= 16 &&
/* Requirements for ETC2 emulation. */
screen->is_format_supported(screen, PIPE_FORMAT_R8G8B8A8_UNORM,
PIPE_TEXTURE_2D, 0, 0,
@@ -1851,7 +1833,7 @@
const struct nir_shader_compiler_options *nir_options =
consts->ShaderCompilerOptions[MESA_SHADER_FRAGMENT].NirOptions;
- if (screen->get_shader_param(screen, PIPE_SHADER_FRAGMENT, PIPE_SHADER_CAP_INTEGERS) &&
+ if (screen->shader_caps[PIPE_SHADER_FRAGMENT].integers &&
extensions->ARB_stencil_texturing &&
screen->caps.doubles &&
!(nir_options->lower_doubles_options & nir_lower_fp64_full_software))
diff --git a/src/mesa/state_tracker/st_pbo.c b/src/mesa/state_tracker/st_pbo.c
index ca2267a..ada3bbd 100644
--- a/src/mesa/state_tracker/st_pbo.c
+++ b/src/mesa/state_tracker/st_pbo.c
@@ -642,7 +642,7 @@
st->pbo.upload_enabled =
screen->caps.texture_buffer_objects &&
screen->caps.texture_buffer_offset_alignment >= 1 &&
- screen->get_shader_param(screen, PIPE_SHADER_FRAGMENT, PIPE_SHADER_CAP_INTEGERS);
+ screen->shader_caps[PIPE_SHADER_FRAGMENT].integers;
if (!st->pbo.upload_enabled)
return;
@@ -650,8 +650,7 @@
st->pbo.upload_enabled &&
screen->caps.sampler_view_target &&
screen->caps.framebuffer_no_attachment &&
- screen->get_shader_param(screen, PIPE_SHADER_FRAGMENT,
- PIPE_SHADER_CAP_MAX_SHADER_IMAGES) >= 1;
+ screen->shader_caps[PIPE_SHADER_FRAGMENT].max_shader_images >= 1;
st->pbo.rgba_only =
screen->caps.buffer_sampler_view_rgba_only;