mesa: move gl_program::is_arb_asm to shader_info
This will be used from radeonsi in the next commit. Reviewed-by: Marek Olšák <marek.olsak@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11972>
This commit is contained in:

committed by
Marge Bot

parent
bff8a948f7
commit
8cd2e82c89
@@ -103,7 +103,7 @@ init_gl_program(struct gl_program *prog, bool is_arb_asm, gl_shader_stage stage)
|
|||||||
{
|
{
|
||||||
prog->RefCount = 1;
|
prog->RefCount = 1;
|
||||||
prog->Format = GL_PROGRAM_FORMAT_ASCII_ARB;
|
prog->Format = GL_PROGRAM_FORMAT_ASCII_ARB;
|
||||||
prog->is_arb_asm = is_arb_asm;
|
prog->info.is_arb_asm = is_arb_asm;
|
||||||
prog->info.stage = stage;
|
prog->info.stage = stage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -271,6 +271,11 @@ typedef struct shader_info {
|
|||||||
*/
|
*/
|
||||||
bool workgroup_size_variable:1;
|
bool workgroup_size_variable:1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is this an ARB assembly-style program.
|
||||||
|
*/
|
||||||
|
bool is_arb_asm;
|
||||||
|
|
||||||
union {
|
union {
|
||||||
struct {
|
struct {
|
||||||
/* Which inputs are doubles */
|
/* Which inputs are doubles */
|
||||||
|
@@ -124,7 +124,7 @@ brw_codegen_vs_prog(struct brw_context *brw,
|
|||||||
memset(&prog_data, 0, sizeof(prog_data));
|
memset(&prog_data, 0, sizeof(prog_data));
|
||||||
|
|
||||||
/* Use ALT floating point mode for ARB programs so that 0^0 == 1. */
|
/* Use ALT floating point mode for ARB programs so that 0^0 == 1. */
|
||||||
if (vp->program.is_arb_asm)
|
if (vp->program.info.is_arb_asm)
|
||||||
stage_prog_data->use_alt_mode = true;
|
stage_prog_data->use_alt_mode = true;
|
||||||
|
|
||||||
mem_ctx = ralloc_context(NULL);
|
mem_ctx = ralloc_context(NULL);
|
||||||
@@ -134,7 +134,7 @@ brw_codegen_vs_prog(struct brw_context *brw,
|
|||||||
brw_assign_common_binding_table_offsets(devinfo, &vp->program,
|
brw_assign_common_binding_table_offsets(devinfo, &vp->program,
|
||||||
&prog_data.base.base, 0);
|
&prog_data.base.base, 0);
|
||||||
|
|
||||||
if (!vp->program.is_arb_asm) {
|
if (!vp->program.info.is_arb_asm) {
|
||||||
brw_nir_setup_glsl_uniforms(mem_ctx, nir, &vp->program,
|
brw_nir_setup_glsl_uniforms(mem_ctx, nir, &vp->program,
|
||||||
&prog_data.base.base,
|
&prog_data.base.base,
|
||||||
compiler->scalar_stage[MESA_SHADER_VERTEX]);
|
compiler->scalar_stage[MESA_SHADER_VERTEX]);
|
||||||
@@ -173,7 +173,7 @@ brw_codegen_vs_prog(struct brw_context *brw,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (INTEL_DEBUG & DEBUG_VS) {
|
if (INTEL_DEBUG & DEBUG_VS) {
|
||||||
if (vp->program.is_arb_asm)
|
if (vp->program.info.is_arb_asm)
|
||||||
brw_dump_arb_asm("vertex", &vp->program);
|
brw_dump_arb_asm("vertex", &vp->program);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -191,12 +191,12 @@ brw_codegen_vs_prog(struct brw_context *brw,
|
|||||||
params.shader_time = true;
|
params.shader_time = true;
|
||||||
params.shader_time_index =
|
params.shader_time_index =
|
||||||
brw_get_shader_time_index(brw, &vp->program, ST_VS,
|
brw_get_shader_time_index(brw, &vp->program, ST_VS,
|
||||||
!vp->program.is_arb_asm);
|
!vp->program.info.is_arb_asm);
|
||||||
}
|
}
|
||||||
|
|
||||||
program = brw_compile_vs(compiler, mem_ctx, ¶ms);
|
program = brw_compile_vs(compiler, mem_ctx, ¶ms);
|
||||||
if (program == NULL) {
|
if (program == NULL) {
|
||||||
if (!vp->program.is_arb_asm) {
|
if (!vp->program.info.is_arb_asm) {
|
||||||
vp->program.sh.data->LinkStatus = LINKING_FAILURE;
|
vp->program.sh.data->LinkStatus = LINKING_FAILURE;
|
||||||
ralloc_strcat(&vp->program.sh.data->InfoLog, params.error_str);
|
ralloc_strcat(&vp->program.sh.data->InfoLog, params.error_str);
|
||||||
}
|
}
|
||||||
|
@@ -86,12 +86,12 @@ brw_codegen_wm_prog(struct brw_context *brw,
|
|||||||
memset(&prog_data, 0, sizeof(prog_data));
|
memset(&prog_data, 0, sizeof(prog_data));
|
||||||
|
|
||||||
/* Use ALT floating point mode for ARB programs so that 0^0 == 1. */
|
/* Use ALT floating point mode for ARB programs so that 0^0 == 1. */
|
||||||
if (fp->program.is_arb_asm)
|
if (fp->program.info.is_arb_asm)
|
||||||
prog_data.base.use_alt_mode = true;
|
prog_data.base.use_alt_mode = true;
|
||||||
|
|
||||||
assign_fs_binding_table_offsets(devinfo, &fp->program, key, &prog_data);
|
assign_fs_binding_table_offsets(devinfo, &fp->program, key, &prog_data);
|
||||||
|
|
||||||
if (!fp->program.is_arb_asm) {
|
if (!fp->program.info.is_arb_asm) {
|
||||||
brw_nir_setup_glsl_uniforms(mem_ctx, nir, &fp->program,
|
brw_nir_setup_glsl_uniforms(mem_ctx, nir, &fp->program,
|
||||||
&prog_data.base, true);
|
&prog_data.base, true);
|
||||||
if (brw->can_push_ubos) {
|
if (brw->can_push_ubos) {
|
||||||
@@ -126,19 +126,19 @@ brw_codegen_wm_prog(struct brw_context *brw,
|
|||||||
params.shader_time = true;
|
params.shader_time = true;
|
||||||
params.shader_time_index8 =
|
params.shader_time_index8 =
|
||||||
brw_get_shader_time_index(brw, &fp->program, ST_FS8,
|
brw_get_shader_time_index(brw, &fp->program, ST_FS8,
|
||||||
!fp->program.is_arb_asm);
|
!fp->program.info.is_arb_asm);
|
||||||
params.shader_time_index16 =
|
params.shader_time_index16 =
|
||||||
brw_get_shader_time_index(brw, &fp->program, ST_FS16,
|
brw_get_shader_time_index(brw, &fp->program, ST_FS16,
|
||||||
!fp->program.is_arb_asm);
|
!fp->program.info.is_arb_asm);
|
||||||
params.shader_time_index32 =
|
params.shader_time_index32 =
|
||||||
brw_get_shader_time_index(brw, &fp->program, ST_FS32,
|
brw_get_shader_time_index(brw, &fp->program, ST_FS32,
|
||||||
!fp->program.is_arb_asm);
|
!fp->program.info.is_arb_asm);
|
||||||
}
|
}
|
||||||
|
|
||||||
program = brw_compile_fs(brw->screen->compiler, mem_ctx, ¶ms);
|
program = brw_compile_fs(brw->screen->compiler, mem_ctx, ¶ms);
|
||||||
|
|
||||||
if (program == NULL) {
|
if (program == NULL) {
|
||||||
if (!fp->program.is_arb_asm) {
|
if (!fp->program.info.is_arb_asm) {
|
||||||
fp->program.sh.data->LinkStatus = LINKING_FAILURE;
|
fp->program.sh.data->LinkStatus = LINKING_FAILURE;
|
||||||
ralloc_strcat(&fp->program.sh.data->InfoLog, params.error_str);
|
ralloc_strcat(&fp->program.sh.data->InfoLog, params.error_str);
|
||||||
}
|
}
|
||||||
@@ -164,7 +164,7 @@ brw_codegen_wm_prog(struct brw_context *brw,
|
|||||||
|
|
||||||
brw_alloc_stage_scratch(brw, &brw->wm.base, prog_data.base.total_scratch);
|
brw_alloc_stage_scratch(brw, &brw->wm.base, prog_data.base.total_scratch);
|
||||||
|
|
||||||
if (((INTEL_DEBUG & DEBUG_WM) && fp->program.is_arb_asm))
|
if (((INTEL_DEBUG & DEBUG_WM) && fp->program.info.is_arb_asm))
|
||||||
fprintf(stderr, "\n");
|
fprintf(stderr, "\n");
|
||||||
|
|
||||||
/* The param and pull_param arrays will be freed by the shader cache. */
|
/* The param and pull_param arrays will be freed by the shader cache. */
|
||||||
|
@@ -2138,8 +2138,6 @@ struct gl_program
|
|||||||
void *driver_cache_blob;
|
void *driver_cache_blob;
|
||||||
size_t driver_cache_blob_size;
|
size_t driver_cache_blob_size;
|
||||||
|
|
||||||
bool is_arb_asm; /** Is this an ARB assembly-style program */
|
|
||||||
|
|
||||||
/** Is this program written to on disk shader cache */
|
/** Is this program written to on disk shader cache */
|
||||||
bool program_written_to_cache;
|
bool program_written_to_cache;
|
||||||
|
|
||||||
|
@@ -2500,7 +2500,7 @@ _mesa_associate_uniform_storage(struct gl_context *ctx,
|
|||||||
unsigned columns = 0;
|
unsigned columns = 0;
|
||||||
|
|
||||||
int dmul;
|
int dmul;
|
||||||
if (ctx->Const.PackedDriverUniformStorage && !prog->is_arb_asm) {
|
if (ctx->Const.PackedDriverUniformStorage && !prog->info.is_arb_asm) {
|
||||||
dmul = storage->type->vector_elements * sizeof(float);
|
dmul = storage->type->vector_elements * sizeof(float);
|
||||||
} else {
|
} else {
|
||||||
dmul = 4 * sizeof(float);
|
dmul = 4 * sizeof(float);
|
||||||
@@ -2593,7 +2593,7 @@ _mesa_associate_uniform_storage(struct gl_context *ctx,
|
|||||||
* initializers in the source code to be copied over.
|
* initializers in the source code to be copied over.
|
||||||
*/
|
*/
|
||||||
unsigned array_elements = MAX2(1, storage->array_elements);
|
unsigned array_elements = MAX2(1, storage->array_elements);
|
||||||
if (ctx->Const.PackedDriverUniformStorage && !prog->is_arb_asm &&
|
if (ctx->Const.PackedDriverUniformStorage && !prog->info.is_arb_asm &&
|
||||||
(storage->is_bindless || !storage->type->contains_opaque())) {
|
(storage->is_bindless || !storage->type->contains_opaque())) {
|
||||||
const int dmul = storage->type->is_64bit() ? 2 : 1;
|
const int dmul = storage->type->is_64bit() ? 2 : 1;
|
||||||
const unsigned components =
|
const unsigned components =
|
||||||
|
@@ -194,7 +194,7 @@ _mesa_init_gl_program(struct gl_program *prog, gl_shader_stage stage,
|
|||||||
prog->RefCount = 1;
|
prog->RefCount = 1;
|
||||||
prog->Format = GL_PROGRAM_FORMAT_ASCII_ARB;
|
prog->Format = GL_PROGRAM_FORMAT_ASCII_ARB;
|
||||||
prog->info.stage = stage;
|
prog->info.stage = stage;
|
||||||
prog->is_arb_asm = is_arb_asm;
|
prog->info.is_arb_asm = is_arb_asm;
|
||||||
|
|
||||||
/* Uniforms that lack an initializer in the shader code have an initial
|
/* Uniforms that lack an initializer in the shader code have an initial
|
||||||
* value of zero. This includes sampler uniforms.
|
* value of zero. This includes sampler uniforms.
|
||||||
|
Reference in New Issue
Block a user