Mesa (master): Merge branch 'master' of ssh://git.freedesktop.org/git/mesa/ mesa
Module: Mesa Branch: master Commit: 7d2cb9a53c288ddafdf9cfd1b3162bcbb903de96 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=7d2cb9a53c288ddafdf9cfd1b3162bcbb903de96 Author: Stéphane Marchesin Date: Mon Jun 6 20:42:30 2011 -0700 Merge branch 'master' of ssh://git.freedesktop.org/git/mesa/mesa --- ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): i915g: Do generic remapping.
Module: Mesa Branch: master Commit: abb436526974bd090853c0927ece0839f9143393 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=abb436526974bd090853c0927ece0839f9143393 Author: Stéphane Marchesin Date: Mon Jun 6 20:40:16 2011 -0700 i915g: Do generic remapping. With complex shaders there are often "holes" in the fs inputs, and we only have 8 tex coorsd to map those to. To fix this, we remap fs inputs to [0..8]. This lets us to run many more GLSL programs. --- src/gallium/drivers/i915/i915_context.h |6 + src/gallium/drivers/i915/i915_fpc_translate.c | 170 ++--- src/gallium/drivers/i915/i915_state_derived.c | 35 +++--- 3 files changed, 119 insertions(+), 92 deletions(-) diff --git a/src/gallium/drivers/i915/i915_context.h b/src/gallium/drivers/i915/i915_context.h index dacf50e..964948e 100644 --- a/src/gallium/drivers/i915/i915_context.h +++ b/src/gallium/drivers/i915/i915_context.h @@ -124,6 +124,12 @@ struct i915_fragment_shader * Else, the bitmask indicates which components are occupied by immediates. */ ubyte constant_flags[I915_MAX_CONSTANT]; + + /** +* The mapping between generics and hw texture coords. +* We need to share this between the vertex and fragment stages. +**/ + int generic_mapping[I915_TEX_UNITS]; }; diff --git a/src/gallium/drivers/i915/i915_fpc_translate.c b/src/gallium/drivers/i915/i915_fpc_translate.c index 51766cd..27f1008 100644 --- a/src/gallium/drivers/i915/i915_fpc_translate.c +++ b/src/gallium/drivers/i915/i915_fpc_translate.c @@ -133,7 +133,21 @@ i915_program_error(struct i915_fp_compile *p, const char *msg, ...) p->error = 1; } - +static uint get_mapping(struct i915_fragment_shader* fs, int unit) +{ + int i; + for (i = 0; i < I915_TEX_UNITS; i++) + { + if (fs->generic_mapping[i] == -1) { + fs->generic_mapping[i] = unit; + return i; + } + if (fs->generic_mapping[i] == unit) + return i; + } + debug_printf("Exceeded max generics\n"); + return 0; +} /** * Construct a ureg for the given source register. Will emit @@ -141,7 +155,8 @@ i915_program_error(struct i915_fp_compile *p, const char *msg, ...) */ static uint src_vector(struct i915_fp_compile *p, - const struct tgsi_full_src_register *source) + const struct tgsi_full_src_register *source, + struct i915_fragment_shader* fs) { uint index = source->Register.Index; uint src = 0, sem_name, sem_ind; @@ -192,15 +207,11 @@ src_vector(struct i915_fp_compile *p, src = swizzle(src, W, W, W, W); break; case TGSI_SEMANTIC_GENERIC: - if (sem_ind < 8) -/* a texcoord */ -src = i915_emit_decl(p, REG_TYPE_T, T_TEX0 + sem_ind, D0_CHANNEL_ALL); - else if ( (sem_ind >= 10) && (sem_ind < 18) ) -/* a varying */ -src = i915_emit_decl(p, REG_TYPE_T, T_TEX0 + sem_ind - 10, D0_CHANNEL_ALL); - else -debug_printf("%s: unhandled generic %d\n", __func__, sem_ind); - break; + { +int real_tex_unit = get_mapping(fs, sem_ind); +src = i915_emit_decl(p, REG_TYPE_T, T_TEX0 + real_tex_unit, D0_CHANNEL_ALL); +break; + } default: i915_program_error(p, "Bad source->Index"); return 0; @@ -342,13 +353,14 @@ translate_tex_src_target(struct i915_fp_compile *p, uint tex) static void emit_tex(struct i915_fp_compile *p, const struct tgsi_full_instruction *inst, - uint opcode) + uint opcode, + struct i915_fragment_shader* fs) { uint texture = inst->Texture.Texture; uint unit = inst->Src[1].Register.Index; uint tex = translate_tex_src_target( p, texture ); uint sampler = i915_emit_decl(p, REG_TYPE_S, unit, tex); - uint coord = src_vector( p, &inst->Src[0]); + uint coord = src_vector( p, &inst->Src[0], fs); i915_emit_texld( p, get_result_vector( p, &inst->Dst[0] ), @@ -367,15 +379,16 @@ emit_tex(struct i915_fp_compile *p, static void emit_simple_arith(struct i915_fp_compile *p, const struct tgsi_full_instruction *inst, - uint opcode, uint numArgs) + uint opcode, uint numArgs, + struct i915_fragment_shader* fs) { uint arg1, arg2, arg3; assert(numArgs <= 3); - arg1 = (numArgs < 1) ? 0 : src_vector( p, &inst->Src[0] ); - arg2 = (numArgs < 2) ? 0 : src_vector( p, &inst->Src[1] ); - arg3 = (numArgs < 3) ? 0 : src_vector( p, &inst->Src[2] ); + arg1 = (numArgs < 1) ? 0 : src_vector( p, &inst->Src[0], fs ); + arg2 = (numArgs < 2) ? 0 : src_vector( p, &inst->Src[1], fs ); + arg3 = (numArgs < 3) ? 0 : src_vector( p, &inst->Src[2], fs ); i915_emit_arith( p, opcode, @@ -391,7 +404,8 @@ emit_simple_arith(struct i915_fp_compile *p, static void emit_simple_arith_swap2(struct i915_fp_compile *p,
Mesa (7.10): darwin: Set VG_LIB_{NAME,GLOB} to fix make install
Module: Mesa Branch: 7.10 Commit: ca9ab0a6a1e469ed418a2f71a4c4843226d657d3 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ca9ab0a6a1e469ed418a2f71a4c4843226d657d3 Author: Jeremy Huddleston Date: Mon Jun 6 19:54:55 2011 -0400 darwin: Set VG_LIB_{NAME,GLOB} to fix make install Signed-off-by: Jeremy Huddleston (cherry picked from commit 22c320aa2c459474a0d220a40b849bf7e4864251) --- configs/darwin | 22 -- 1 files changed, 12 insertions(+), 10 deletions(-) diff --git a/configs/darwin b/configs/darwin index 9c126ea..3cf1110 100644 --- a/configs/darwin +++ b/configs/darwin @@ -31,18 +31,20 @@ CXXFLAGS = -ggdb3 -Os -Wall -fno-strict-aliasing \ -I$(INSTALL_DIR)/include -I$(X11_DIR)/include $(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) $(ASM_FLAGS) $(DEFINES) # Library names (actual file names) -GL_LIB_NAME = libGL.dylib -GLU_LIB_NAME = libGLU.dylib -GLUT_LIB_NAME = libglut.dylib -GLW_LIB_NAME = libGLw.dylib -OSMESA_LIB_NAME = libOSMesa.dylib +GL_LIB_NAME = lib$(GL_LIB).dylib +GLU_LIB_NAME = lib$(GLU_LIB).dylib +GLUT_LIB_NAME = lib$(GLUT_LIB).dylib +GLW_LIB_NAME = lib$(GLW_LIB).dylib +OSMESA_LIB_NAME = lib$(OSMESA_LIB).dylib +VG_LIB_NAME = lib$(VG_LIB).dylib # globs used to install the lib and all symlinks -GL_LIB_GLOB = libGL.*dylib -GLU_LIB_GLOB = libGLU.*dylib -GLUT_LIB_GLOB = libglut.*dylib -GLW_LIB_GLOB = libGLw.*dylib -OSMESA_LIB_GLOB = libOSMesa.*dylib +GL_LIB_GLOB = lib$(GL_LIB).*dylib +GLU_LIB_GLOB = lib$(GLU_LIB).*dylib +GLUT_LIB_GLOB = lib$(GLUT_LIB).*dylib +GLW_LIB_GLOB = lib$(GLW_LIB).*dylib +OSMESA_LIB_GLOB = lib$(OSMESA_LIB).*dylib +VG_LIB_GLOB = lib$(VG_LIB).*.dylib GL_LIB_DEPS = -L$(INSTALL_DIR)/$(LIB_DIR) -L$(X11_DIR)/$(LIB_DIR) -lX11 -lXext -lm -lpthread OSMESA_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): darwin: Set VG_LIB_{NAME,GLOB} to fix make install
Module: Mesa Branch: master Commit: 22c320aa2c459474a0d220a40b849bf7e4864251 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=22c320aa2c459474a0d220a40b849bf7e4864251 Author: Jeremy Huddleston Date: Mon Jun 6 19:54:55 2011 -0400 darwin: Set VG_LIB_{NAME,GLOB} to fix make install Signed-off-by: Jeremy Huddleston --- configs/darwin | 22 -- 1 files changed, 12 insertions(+), 10 deletions(-) diff --git a/configs/darwin b/configs/darwin index 9c126ea..3cf1110 100644 --- a/configs/darwin +++ b/configs/darwin @@ -31,18 +31,20 @@ CXXFLAGS = -ggdb3 -Os -Wall -fno-strict-aliasing \ -I$(INSTALL_DIR)/include -I$(X11_DIR)/include $(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) $(ASM_FLAGS) $(DEFINES) # Library names (actual file names) -GL_LIB_NAME = libGL.dylib -GLU_LIB_NAME = libGLU.dylib -GLUT_LIB_NAME = libglut.dylib -GLW_LIB_NAME = libGLw.dylib -OSMESA_LIB_NAME = libOSMesa.dylib +GL_LIB_NAME = lib$(GL_LIB).dylib +GLU_LIB_NAME = lib$(GLU_LIB).dylib +GLUT_LIB_NAME = lib$(GLUT_LIB).dylib +GLW_LIB_NAME = lib$(GLW_LIB).dylib +OSMESA_LIB_NAME = lib$(OSMESA_LIB).dylib +VG_LIB_NAME = lib$(VG_LIB).dylib # globs used to install the lib and all symlinks -GL_LIB_GLOB = libGL.*dylib -GLU_LIB_GLOB = libGLU.*dylib -GLUT_LIB_GLOB = libglut.*dylib -GLW_LIB_GLOB = libGLw.*dylib -OSMESA_LIB_GLOB = libOSMesa.*dylib +GL_LIB_GLOB = lib$(GL_LIB).*dylib +GLU_LIB_GLOB = lib$(GLU_LIB).*dylib +GLUT_LIB_GLOB = lib$(GLUT_LIB).*dylib +GLW_LIB_GLOB = lib$(GLW_LIB).*dylib +OSMESA_LIB_GLOB = lib$(OSMESA_LIB).*dylib +VG_LIB_GLOB = lib$(VG_LIB).*.dylib GL_LIB_DEPS = -L$(INSTALL_DIR)/$(LIB_DIR) -L$(X11_DIR)/$(LIB_DIR) -lX11 -lXext -lm -lpthread OSMESA_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): r600g: optimise the draw emission packets for r600/eg
Module: Mesa Branch: master Commit: ca01fe007d3962386cb98aef762d5a2ff114e4aa URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ca01fe007d3962386cb98aef762d5a2ff114e4aa Author: Dave Airlie Date: Mon Jun 6 20:03:13 2011 +1000 r600g: optimise the draw emission packets for r600/eg This just reduces code size a bit for this chunk. Signed-off-by: Dave Airlie --- src/gallium/winsys/r600/drm/evergreen_hw_context.c | 33 ++- src/gallium/winsys/r600/drm/r600_hw_context.c | 34 +++- 2 files changed, 37 insertions(+), 30 deletions(-) diff --git a/src/gallium/winsys/r600/drm/evergreen_hw_context.c b/src/gallium/winsys/r600/drm/evergreen_hw_context.c index 7a1be87..3cf41c1 100644 --- a/src/gallium/winsys/r600/drm/evergreen_hw_context.c +++ b/src/gallium/winsys/r600/drm/evergreen_hw_context.c @@ -1143,6 +1143,7 @@ void evergreen_context_draw(struct r600_context *ctx, const struct r600_draw *dr unsigned ndwords = 7; struct r600_block *dirty_block = NULL; struct r600_block *next_block; + uint32_t *pm4; if (draw->indices) { ndwords = 11; @@ -1184,24 +1185,26 @@ void evergreen_context_draw(struct r600_context *ctx, const struct r600_draw *dr } /* draw packet */ - ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_INDEX_TYPE, 0, ctx->predicate_drawing); - ctx->pm4[ctx->pm4_cdwords++] = draw->vgt_index_type; - ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_NUM_INSTANCES, 0, ctx->predicate_drawing); - ctx->pm4[ctx->pm4_cdwords++] = draw->vgt_num_instances; + pm4 = &ctx->pm4[ctx->pm4_cdwords]; + pm4[0] = PKT3(PKT3_INDEX_TYPE, 0, ctx->predicate_drawing); + pm4[1] = draw->vgt_index_type; + pm4[2] = PKT3(PKT3_NUM_INSTANCES, 0, ctx->predicate_drawing); + pm4[3] = draw->vgt_num_instances; if (draw->indices) { - ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_DRAW_INDEX, 3, ctx->predicate_drawing); - ctx->pm4[ctx->pm4_cdwords++] = draw->indices_bo_offset + r600_bo_offset(draw->indices); - ctx->pm4[ctx->pm4_cdwords++] = 0; - ctx->pm4[ctx->pm4_cdwords++] = draw->vgt_num_indices; - ctx->pm4[ctx->pm4_cdwords++] = draw->vgt_draw_initiator; - ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_NOP, 0, ctx->predicate_drawing); - ctx->pm4[ctx->pm4_cdwords++] = 0; - r600_context_bo_reloc(ctx, &ctx->pm4[ctx->pm4_cdwords - 1], draw->indices); + pm4[4] = PKT3(PKT3_DRAW_INDEX, 3, ctx->predicate_drawing); + pm4[5] = draw->indices_bo_offset + r600_bo_offset(draw->indices); + pm4[6] = 0; + pm4[7] = draw->vgt_num_indices; + pm4[8] = draw->vgt_draw_initiator; + pm4[9] = PKT3(PKT3_NOP, 0, ctx->predicate_drawing); + pm4[10] = 0; + r600_context_bo_reloc(ctx, &pm4[10], draw->indices); } else { - ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_DRAW_INDEX_AUTO, 1, ctx->predicate_drawing); - ctx->pm4[ctx->pm4_cdwords++] = draw->vgt_num_indices; - ctx->pm4[ctx->pm4_cdwords++] = draw->vgt_draw_initiator; + pm4[4] = PKT3(PKT3_DRAW_INDEX_AUTO, 1, ctx->predicate_drawing); + pm4[5] = draw->vgt_num_indices; + pm4[6] = draw->vgt_draw_initiator; } + ctx->pm4_cdwords += ndwords; ctx->flags |= (R600_CONTEXT_DRAW_PENDING | R600_CONTEXT_DST_CACHES_DIRTY); diff --git a/src/gallium/winsys/r600/drm/r600_hw_context.c b/src/gallium/winsys/r600/drm/r600_hw_context.c index c5551b2..cb244f2 100644 --- a/src/gallium/winsys/r600/drm/r600_hw_context.c +++ b/src/gallium/winsys/r600/drm/r600_hw_context.c @@ -1347,6 +1347,7 @@ void r600_context_draw(struct r600_context *ctx, const struct r600_draw *draw) unsigned ndwords = 7; struct r600_block *dirty_block = NULL; struct r600_block *next_block; + uint32_t *pm4; if (draw->indices) { ndwords = 11; @@ -1389,24 +1390,27 @@ void r600_context_draw(struct r600_context *ctx, const struct r600_draw *draw) } /* draw packet */ - ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_INDEX_TYPE, 0, ctx->predicate_drawing); - ctx->pm4[ctx->pm4_cdwords++] = draw->vgt_index_type; - ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_NUM_INSTANCES, 0, ctx->predicate_drawing); - ctx->pm4[ctx->pm4_cdwords++] = draw->vgt_num_instances; + pm4 = &ctx->pm4[ctx->pm4_cdwords]; + + pm4[0] = PKT3(PKT3_INDEX_TYPE, 0, ctx->predicate_drawing); + pm4[1] = draw->vgt_index_type; + pm4[2] = PKT3(PKT3_NUM_INSTANCES, 0, ctx->predicate_drawing); + pm4[3] = draw->vgt_num_instances; if (draw->indices) { - ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_DRAW_INDEX, 3, ctx->predicate_drawing); - ctx->pm4[ctx->pm4_cdwords++] = draw->indice
Mesa (master): r600g: use an enabled list to track enabled blocks.
Module: Mesa Branch: master Commit: 63184bc8b278ba82f5462798b323774c67a019e6 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=63184bc8b278ba82f5462798b323774c67a019e6 Author: Dave Airlie Date: Fri Jun 3 09:59:12 2011 +1000 r600g: use an enabled list to track enabled blocks. At the end of flushing we were scanning over 450 blocks with generally about 50 enabled. This reduces the scanning to just the list of enabled blocks. Signed-off-by: Dave Airlie --- src/gallium/drivers/r600/r600.h|2 + src/gallium/winsys/r600/drm/evergreen_hw_context.c | 46 +++- src/gallium/winsys/r600/drm/r600_hw_context.c | 42 -- src/gallium/winsys/r600/drm/r600_priv.h|1 + 4 files changed, 56 insertions(+), 35 deletions(-) diff --git a/src/gallium/drivers/r600/r600.h b/src/gallium/drivers/r600/r600.h index cc70600..b1444bf 100644 --- a/src/gallium/drivers/r600/r600.h +++ b/src/gallium/drivers/r600/r600.h @@ -188,6 +188,7 @@ struct r600_block_reloc { struct r600_block { struct list_headlist; + struct list_headenable_list; unsignedstatus; unsignedflags; unsignedstart_offset; @@ -251,6 +252,7 @@ struct r600_context { unsignednblocks; struct r600_block **blocks; struct list_headdirty; + struct list_headenable_list; unsignedpm4_ndwords; unsignedpm4_cdwords; unsignedpm4_dirty_cdwords; diff --git a/src/gallium/winsys/r600/drm/evergreen_hw_context.c b/src/gallium/winsys/r600/drm/evergreen_hw_context.c index 7072461..7a1be87 100644 --- a/src/gallium/winsys/r600/drm/evergreen_hw_context.c +++ b/src/gallium/winsys/r600/drm/evergreen_hw_context.c @@ -43,31 +43,31 @@ static const struct r600_reg evergreen_config_reg_list[] = { {R_008958_VGT_PRIMITIVE_TYPE, 0, 0, 0}, {R_008A14_PA_CL_ENHANCE, 0, 0, 0}, - {R_008C00_SQ_CONFIG, 0, 0, 0}, - {R_008C04_SQ_GPR_RESOURCE_MGMT_1, 0, 0, 0}, - {R_008C08_SQ_GPR_RESOURCE_MGMT_2, 0, 0, 0}, - {R_008C0C_SQ_THREAD_RESOURCE_MGMT, 0, 0, 0}, - {R_008C18_SQ_THREAD_RESOURCE_MGMT_1, 0, 0, 0}, - {R_008C1C_SQ_THREAD_RESOURCE_MGMT_2, 0, 0, 0}, - {R_008C20_SQ_STACK_RESOURCE_MGMT_1, 0, 0, 0}, - {R_008C24_SQ_STACK_RESOURCE_MGMT_2, 0, 0, 0}, - {R_008C28_SQ_STACK_RESOURCE_MGMT_3, 0, 0, 0}, - {R_008D8C_SQ_DYN_GPR_CNTL_PS_FLUSH_REQ, 0, 0, 0}, - {R_009100_SPI_CONFIG_CNTL, 0, 0, 0}, - {R_00913C_SPI_CONFIG_CNTL_1, 0, 0, 0}, + {R_008C00_SQ_CONFIG, REG_FLAG_ENABLE_ALWAYS, 0, 0}, + {R_008C04_SQ_GPR_RESOURCE_MGMT_1, REG_FLAG_ENABLE_ALWAYS, 0, 0}, + {R_008C08_SQ_GPR_RESOURCE_MGMT_2, REG_FLAG_ENABLE_ALWAYS, 0, 0}, + {R_008C0C_SQ_THREAD_RESOURCE_MGMT, REG_FLAG_ENABLE_ALWAYS, 0, 0}, + {R_008C18_SQ_THREAD_RESOURCE_MGMT_1, REG_FLAG_ENABLE_ALWAYS, 0, 0}, + {R_008C1C_SQ_THREAD_RESOURCE_MGMT_2, REG_FLAG_ENABLE_ALWAYS, 0, 0}, + {R_008C20_SQ_STACK_RESOURCE_MGMT_1, REG_FLAG_ENABLE_ALWAYS, 0, 0}, + {R_008C24_SQ_STACK_RESOURCE_MGMT_2, REG_FLAG_ENABLE_ALWAYS, 0, 0}, + {R_008C28_SQ_STACK_RESOURCE_MGMT_3, REG_FLAG_ENABLE_ALWAYS, 0, 0}, + {R_008D8C_SQ_DYN_GPR_CNTL_PS_FLUSH_REQ, REG_FLAG_ENABLE_ALWAYS, 0, 0}, + {R_009100_SPI_CONFIG_CNTL, REG_FLAG_ENABLE_ALWAYS, 0, 0}, + {R_00913C_SPI_CONFIG_CNTL_1, REG_FLAG_ENABLE_ALWAYS, 0, 0}, }; static const struct r600_reg cayman_config_reg_list[] = { {R_008958_VGT_PRIMITIVE_TYPE, 0, 0, 0}, {R_008A14_PA_CL_ENHANCE, 0, 0, 0}, - {R_008C00_SQ_CONFIG, 0, 0, 0}, - {R_008C04_SQ_GPR_RESOURCE_MGMT_1, 0, 0, 0}, - {CM_R_008C10_SQ_GLOBAL_GPR_RESOURCE_MGMT_1, 0, 0, 0}, - {CM_R_008C14_SQ_GLOBAL_GPR_RESOURCE_MGMT_2, 0, 0, 0}, - {R_008D8C_SQ_DYN_GPR_CNTL_PS_FLUSH_REQ, 0, 0, 0}, - {R_009100_SPI_CONFIG_CNTL, 0, 0, 0}, - {R_00913C_SPI_CONFIG_CNTL_1, 0, 0, 0}, + {R_008C00_SQ_CONFIG, REG_FLAG_ENABLE_ALWAYS, 0, 0}, + {R_008C04_SQ_GPR_RESOURCE_MGMT_1, REG_FLAG_ENABLE_ALWAYS, 0, 0}, + {CM_R_008C10_SQ_GLOBAL_GPR_RESOURCE_MGMT_1, REG_FLAG_ENABLE_ALWAYS, 0, 0}, + {CM_R_008C14_SQ_GLOBAL_GPR_RESOURCE_MGMT_2, REG_FLAG_ENABLE_ALWAYS, 0, 0}, + {R_008D8C_SQ_DYN_GPR_CNTL_PS_FLUSH_REQ, REG_FLAG_ENABLE_ALWAYS, 0, 0}, + {R_009100_SPI_CONFIG_CNTL, REG_FLAG_ENABLE_ALWAYS, 0, 0}, + {R_00913C_SPI_CONFIG_CNTL_1, REG_FLAG_ENABLE_ALWAYS, 0, 0}, }; static const struct r600_reg evergreen_ctl_const_list[] = { @@ -904,6 +904,10 @@ int evergreen_context_init(struct r600_context *ctx, struct radeon *radeon) ctx->radeon = radeon; LIST_INITHEAD(&ctx->query_list); + /* init dirty list */ + LIST_INITHEAD(&ctx->dirty); + LIST_INITHEAD(&ctx->enable_list); + ctx->range = calloc(NUM_RANGES, sizeof(struct r600_range));
Mesa (master): r600g: split out block init
Module: Mesa Branch: master Commit: be7af43f5a725b65701ab1e37a5c373d715be9b0 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=be7af43f5a725b65701ab1e37a5c373d715be9b0 Author: Dave Airlie Date: Mon Jun 6 14:33:23 2011 +1000 r600g: split out block init This just splits this function up as pre-cursor to reusing the internals of it. Signed-off-by: Dave Airlie --- src/gallium/winsys/r600/drm/r600_hw_context.c | 101 +--- 1 files changed, 55 insertions(+), 46 deletions(-) diff --git a/src/gallium/winsys/r600/drm/r600_hw_context.c b/src/gallium/winsys/r600/drm/r600_hw_context.c index 2039e8a..41d32d8 100644 --- a/src/gallium/winsys/r600/drm/r600_hw_context.c +++ b/src/gallium/winsys/r600/drm/r600_hw_context.c @@ -79,6 +79,60 @@ static void INLINE r600_context_fence_wraparound(struct r600_context *ctx, unsig } } +static void r600_init_block(struct r600_context *ctx, + struct r600_block *block, + const struct r600_reg *reg, int index, int nreg, + unsigned opcode, unsigned offset_base) +{ + int i = index; + int j, n = nreg; + + /* initialize block */ + block->status |= R600_BLOCK_STATUS_DIRTY; /* dirty all blocks at start */ + block->start_offset = reg[i].offset; + block->pm4[block->pm4_ndwords++] = PKT3(opcode, n, 0); + block->pm4[block->pm4_ndwords++] = (block->start_offset - offset_base) >> 2; + block->reg = &block->pm4[block->pm4_ndwords]; + block->pm4_ndwords += n; + block->nreg = n; + block->nreg_dirty = n; + block->flags = 0; + LIST_INITHEAD(&block->list); + + for (j = 0; j < n; j++) { + if (reg[i+j].flags & REG_FLAG_DIRTY_ALWAYS) { + block->flags |= REG_FLAG_DIRTY_ALWAYS; + } + if (reg[i+j].flags & REG_FLAG_NEED_BO) { + block->nbo++; + assert(block->nbo < R600_BLOCK_MAX_BO); + block->pm4_bo_index[j] = block->nbo; + block->pm4[block->pm4_ndwords++] = PKT3(PKT3_NOP, 0, 0); + block->pm4[block->pm4_ndwords++] = 0x; + if (reg[i+j].flags & REG_FLAG_RV6XX_SBU) { + block->reloc[block->nbo].flush_flags = 0; + block->reloc[block->nbo].flush_mask = 0; + } else { + block->reloc[block->nbo].flush_flags = reg[i+j].flush_flags; + block->reloc[block->nbo].flush_mask = reg[i+j].flush_mask; + } + block->reloc[block->nbo].bo_pm4_index = block->pm4_ndwords - 1; + } + if ((ctx->radeon->family > CHIP_R600) && + (ctx->radeon->family < CHIP_RV770) && reg[i+j].flags & REG_FLAG_RV6XX_SBU) { + block->pm4[block->pm4_ndwords++] = PKT3(PKT3_SURFACE_BASE_UPDATE, 0, 0); + block->pm4[block->pm4_ndwords++] = reg[i+j].flush_flags; + } + } + for (j = 0; j < n; j++) { + if (reg[i+j].flush_flags) { + block->pm4_flush_ndwords += 7; + } + } + /* check that we stay in limit */ + assert(block->pm4_ndwords < R600_BLOCK_MAX_REG); +} + int r600_context_add_block(struct r600_context *ctx, const struct r600_reg *reg, unsigned nreg, unsigned opcode, unsigned offset_base) { @@ -87,8 +141,6 @@ int r600_context_add_block(struct r600_context *ctx, const struct r600_reg *reg, int offset; for (unsigned i = 0, n = 0; i < nreg; i += n) { - u32 j; - /* ignore new block balise */ if (reg[i].offset == GROUP_FORCE_NEW_BLOCK) { n = 1; @@ -131,50 +183,7 @@ int r600_context_add_block(struct r600_context *ctx, const struct r600_reg *reg, range->blocks[CTX_BLOCK_ID(reg[i + j].offset)] = block; } - /* initialize block */ - block->status |= R600_BLOCK_STATUS_DIRTY; /* dirty all blocks at start */ - block->start_offset = reg[i].offset; - block->pm4[block->pm4_ndwords++] = PKT3(opcode, n, 0); - block->pm4[block->pm4_ndwords++] = (block->start_offset - offset_base) >> 2; - block->reg = &block->pm4[block->pm4_ndwords]; - block->pm4_ndwords += n; - block->nreg = n; - block->nreg_dirty = n; - block->flags = 0; - LIST_INITHEAD(&block->list); - - for (j = 0; j < n; j++) { - if (reg[i+j].flags & REG_FLAG_DIRTY_ALWAYS) { - block->flags |= REG_FLAG_DIRTY_ALWAYS; - } - if (reg[i+j].
Mesa (master): r600g/winsys: overhaul resource range/blocks.
Module: Mesa Branch: master Commit: f356bb74de7ab9ad1085a0fc2f16c1dae4ff171e URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=f356bb74de7ab9ad1085a0fc2f16c1dae4ff171e Author: Dave Airlie Date: Mon Jun 6 18:00:36 2011 +1000 r600g/winsys: overhaul resource range/blocks. There isn't much point taking the overhead of range/block lookups on resources we aren't going to be getting resource registers at wierd offsets. Signed-off-by: Dave Airlie --- src/gallium/drivers/r600/r600.h|4 + src/gallium/winsys/r600/drm/evergreen_hw_context.c | 50 - src/gallium/winsys/r600/drm/r600_hw_context.c | 118 ++-- src/gallium/winsys/r600/drm/r600_priv.h|3 +- 4 files changed, 110 insertions(+), 65 deletions(-) diff --git a/src/gallium/drivers/r600/r600.h b/src/gallium/drivers/r600/r600.h index 5d6240a..cc70600 100644 --- a/src/gallium/drivers/r600/r600.h +++ b/src/gallium/drivers/r600/r600.h @@ -267,6 +267,10 @@ struct r600_context { unsignednum_dest_buffers; unsignedflags; boolean predicate_drawing; + struct r600_range ps_resources; + struct r600_range vs_resources; + struct r600_range fs_resources; + int num_ps_resources, num_vs_resources, num_fs_resources; }; struct r600_draw { diff --git a/src/gallium/winsys/r600/drm/evergreen_hw_context.c b/src/gallium/winsys/r600/drm/evergreen_hw_context.c index 701d4e9..7072461 100644 --- a/src/gallium/winsys/r600/drm/evergreen_hw_context.c +++ b/src/gallium/winsys/r600/drm/evergreen_hw_context.c @@ -817,7 +817,7 @@ static const struct r600_reg cayman_context_reg_list[] = { }; /* SHADER RESOURCE R600/R700 */ -static int evergreen_state_resource_init(struct r600_context *ctx, u32 offset) +static int r600_resource_range_init(struct r600_context *ctx, struct r600_range *range, unsigned offset, unsigned nblocks, unsigned stride) { struct r600_reg r600_shader_resource[] = { {R_03_RESOURCE0_WORD0, 0, 0, 0}, @@ -831,10 +831,7 @@ static int evergreen_state_resource_init(struct r600_context *ctx, u32 offset) }; unsigned nreg = Elements(r600_shader_resource); - for (int i = 0; i < nreg; i++) { - r600_shader_resource[i].offset += offset; - } - return r600_context_add_block(ctx, r600_shader_resource, nreg, PKT3_SET_RESOURCE, EVERGREEN_RESOURCE_OFFSET); + return r600_resource_init(ctx, range, offset, nblocks, stride, r600_shader_resource, nreg, EVERGREEN_RESOURCE_OFFSET); } /* SHADER SAMPLER R600/R700 */ @@ -960,24 +957,19 @@ int evergreen_context_init(struct r600_context *ctx, struct radeon *radeon) if (r) goto out_err; } - /* PS RESOURCE */ - for (int j = 0, offset = 0; j < 176; j++, offset += 0x20) { - r = evergreen_state_resource_init(ctx, offset); - if (r) - goto out_err; - } - /* VS RESOURCE */ - for (int j = 0, offset = 0x1600; j < 160; j++, offset += 0x20) { - r = evergreen_state_resource_init(ctx, offset); - if (r) - goto out_err; - } - /* FS RESOURCE */ - for (int j = 0, offset = 0x7C00; j < 16; j++, offset += 0x20) { - r = evergreen_state_resource_init(ctx, offset); - if (r) - goto out_err; - } + + ctx->num_ps_resources = 176; + ctx->num_vs_resources = 160; + ctx->num_fs_resources = 16; + r = r600_resource_range_init(ctx, &ctx->ps_resources, 0, 176, 0x20); + if (r) + goto out_err; + r = r600_resource_range_init(ctx, &ctx->vs_resources, 0x1600, 160, 0x20); + if (r) + goto out_err; + r = r600_resource_range_init(ctx, &ctx->fs_resources, 0x7C00, 16, 0x20); + if (r) + goto out_err; /* PS loop const */ evergreen_loop_const_init(ctx, 0); @@ -1025,23 +1017,23 @@ out_err: void evergreen_context_pipe_state_set_ps_resource(struct r600_context *ctx, struct r600_pipe_resource_state *state, unsigned rid) { - unsigned offset = R_03_SQ_TEX_RESOURCE_WORD0_0 + 0x20 * rid; + struct r600_block *block = ctx->ps_resources.blocks[rid]; - r600_context_pipe_state_set_resource(ctx, state, offset); + r600_context_pipe_state_set_resource(ctx, state, block); } void evergreen_context_pipe_state_set_vs_resource(struct r600_context *ctx, struct r600_pipe_resource_state *state, unsigned rid) { - unsigned offset = R_03_SQ_TEX_RESOURCE_WORD0_0 + 0x1600 + 0x20 * rid; + struct r600_block *block = ctx->vs_resources.blocks[rid]; - r600_context_pipe_state_set_resource(ctx, state, offset); + r600_context_pipe_state_set_resource(ctx, state, block); } void evergreen_context_pipe_state_set_fs_resource(struct r
Mesa (master): r600g: move resource setting to its own structures.
Module: Mesa Branch: master Commit: cf0f02e501eb2eb8edcf2c4f6db826b0cdd31c9b URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=cf0f02e501eb2eb8edcf2c4f6db826b0cdd31c9b Author: Dave Airlie Date: Fri Jun 3 15:34:31 2011 +1000 r600g: move resource setting to its own structures. resource setting could be a fair bit more lightweight, this patch just separates the resource structs from the standard reg tracking structs in the driver, later patches will improve the winsys. Signed-off-by: Dave Airlie --- src/gallium/drivers/r600/evergreen_state.c | 106 src/gallium/drivers/r600/r600.h| 18 ++- src/gallium/drivers/r600/r600_pipe.h | 20 ++-- src/gallium/drivers/r600/r600_state.c | 94 -- src/gallium/drivers/r600/r600_state_common.c | 16 ++-- src/gallium/winsys/r600/drm/evergreen_hw_context.c |6 +- src/gallium/winsys/r600/drm/r600_hw_context.c | 50 +- src/gallium/winsys/r600/drm/r600_priv.h|2 +- 8 files changed, 140 insertions(+), 172 deletions(-) diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index 54f5410..17abdff 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -380,9 +380,8 @@ static struct pipe_sampler_view *evergreen_create_sampler_view(struct pipe_conte struct pipe_resource *texture, const struct pipe_sampler_view *state) { - struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; struct r600_pipe_sampler_view *resource = CALLOC_STRUCT(r600_pipe_sampler_view); - struct r600_pipe_state *rstate; + struct r600_pipe_resource_state *rstate; const struct util_format_description *desc; struct r600_resource_texture *tmp; struct r600_resource *rbuffer; @@ -438,35 +437,27 @@ static struct pipe_sampler_view *evergreen_create_sampler_view(struct pipe_conte array_mode = tmp->array_mode[0]; tile_type = tmp->tile_type; - r600_pipe_state_add_reg(rstate, R_03_RESOURCE0_WORD0, - S_03_DIM(r600_tex_dim(texture->target)) | - S_03_PITCH((pitch / 8) - 1) | - S_03_NON_DISP_TILING_ORDER(tile_type) | - S_03_TEX_WIDTH(texture->width0 - 1), 0x, NULL); - r600_pipe_state_add_reg(rstate, R_030004_RESOURCE0_WORD1, - S_030004_TEX_HEIGHT(texture->height0 - 1) | - S_030004_TEX_DEPTH(texture->depth0 - 1) | - S_030004_ARRAY_MODE(array_mode), - 0x, NULL); - r600_pipe_state_add_reg(rstate, R_030008_RESOURCE0_WORD2, - (tmp->offset[0] + r600_bo_offset(bo[0])) >> 8, 0x, bo[0]); - r600_pipe_state_add_reg(rstate, R_03000C_RESOURCE0_WORD3, - (tmp->offset[1] + r600_bo_offset(bo[1])) >> 8, 0x, bo[1]); - r600_pipe_state_add_reg(rstate, R_030010_RESOURCE0_WORD4, - word4 | - S_030010_SRF_MODE_ALL(V_030010_SRF_MODE_ZERO_CLAMP_MINUS_ONE) | - S_030010_ENDIAN_SWAP(endian) | - S_030010_BASE_LEVEL(state->u.tex.first_level), 0x, NULL); - r600_pipe_state_add_reg(rstate, R_030014_RESOURCE0_WORD5, - S_030014_LAST_LEVEL(state->u.tex.last_level) | - S_030014_BASE_ARRAY(0) | - S_030014_LAST_ARRAY(0), 0x, NULL); - r600_pipe_state_add_reg(rstate, R_030018_RESOURCE0_WORD6, - S_030018_MAX_ANISO(4 /* max 16 samples */), - 0x, NULL); - r600_pipe_state_add_reg(rstate, R_03001C_RESOURCE0_WORD7, - S_03001C_DATA_FORMAT(format) | - S_03001C_TYPE(V_03001C_SQ_TEX_VTX_VALID_TEXTURE), 0x, NULL); + rstate->bo[0] = bo[0]; + rstate->bo[1] = bo[1]; + rstate->val[0] = (S_03_DIM(r600_tex_dim(texture->target)) | + S_03_PITCH((pitch / 8) - 1) | + S_03_NON_DISP_TILING_ORDER(tile_type) | + S_03_TEX_WIDTH(texture->width0 - 1)); + rstate->val[1] = (S_030004_TEX_HEIGHT(texture->height0 - 1) | + S_030004_TEX_DEPTH(texture->depth0 - 1) | + S_030004_ARRAY_MODE(array_mode)); + rstate->val[2] = (tmp->offset[0] + r600_bo_offset(bo[0])) >> 8; + rstate->val[3] = (tmp->offset[1] + r600_bo_offset(bo[1])) >> 8; +
Mesa (master): r600g: don' t need to call the packet dirty function if not dirty.
Module: Mesa Branch: master Commit: 6cd3534676a58e92ac479eee7040df2ad27fdac0 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6cd3534676a58e92ac479eee7040df2ad27fdac0 Author: Dave Airlie Date: Fri Jun 3 15:24:55 2011 +1000 r600g: don't need to call the packet dirty function if not dirty. also fix a unneeded dirty check and add a dirty check speedup. Signed-off-by: Dave Airlie --- src/gallium/winsys/r600/drm/evergreen_hw_context.c |7 --- src/gallium/winsys/r600/drm/r600_hw_context.c | 20 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/gallium/winsys/r600/drm/evergreen_hw_context.c b/src/gallium/winsys/r600/drm/evergreen_hw_context.c index cf8ae51..aa789e6 100644 --- a/src/gallium/winsys/r600/drm/evergreen_hw_context.c +++ b/src/gallium/winsys/r600/drm/evergreen_hw_context.c @@ -1066,8 +1066,8 @@ static inline void evergreen_context_pipe_state_set_sampler(struct r600_context block->reg[i] = state->regs[i].value; } } - - r600_context_dirty_block(ctx, block, dirty, 2); + if (dirty) + r600_context_dirty_block(ctx, block, dirty, 2); } static inline void evergreen_context_ps_partial_flush(struct r600_context *ctx) @@ -1119,7 +1119,8 @@ static inline void evergreen_context_pipe_state_set_sampler_border(struct r600_c if (dirty & R600_BLOCK_STATUS_DIRTY) evergreen_context_ps_partial_flush(ctx); - r600_context_dirty_block(ctx, block, dirty, 4); + if (dirty) + r600_context_dirty_block(ctx, block, dirty, 4); } void evergreen_context_pipe_state_set_ps_sampler(struct r600_context *ctx, struct r600_pipe_state *state, unsigned id) diff --git a/src/gallium/winsys/r600/drm/r600_hw_context.c b/src/gallium/winsys/r600/drm/r600_hw_context.c index a3c8945..4c21d60 100644 --- a/src/gallium/winsys/r600/drm/r600_hw_context.c +++ b/src/gallium/winsys/r600/drm/r600_hw_context.c @@ -920,13 +920,14 @@ void r600_context_reg(struct r600_context *ctx, dirty |= R600_BLOCK_STATUS_DIRTY; block->reg[id] = new_val; } - r600_context_dirty_block(ctx, block, dirty, id); + if (dirty) + r600_context_dirty_block(ctx, block, dirty, id); } void r600_context_dirty_block(struct r600_context *ctx, struct r600_block *block, int dirty, int index) { - if (dirty && (index + 1) > block->nreg_dirty) + if ((index + 1) > block->nreg_dirty) block->nreg_dirty = index + 1; if ((dirty != (block->status & R600_BLOCK_STATUS_DIRTY)) || !(block->status & R600_BLOCK_STATUS_ENABLED)) { @@ -970,7 +971,8 @@ void r600_context_pipe_state_set(struct r600_context *ctx, struct r600_pipe_stat dirty |= R600_BLOCK_STATUS_DIRTY; } - r600_context_dirty_block(ctx, block, dirty, id); + if (dirty) + r600_context_dirty_block(ctx, block, dirty, id); } } @@ -998,7 +1000,7 @@ void r600_context_pipe_state_set_resource(struct r600_context *ctx, struct r600_ dirty = block->status & R600_BLOCK_STATUS_DIRTY; for (i = 0; i < num_regs; i++) { - if (block->reg[i] != state->regs[i].value) { + if (dirty || (block->reg[i] != state->regs[i].value)) { dirty |= R600_BLOCK_STATUS_DIRTY; block->reg[i] = state->regs[i].value; } @@ -1045,7 +1047,8 @@ void r600_context_pipe_state_set_resource(struct r600_context *ctx, struct r600_ state->regs[2].bo->bo->binding |= BO_BOUND_TEXTURE; } } - r600_context_dirty_block(ctx, block, dirty, num_regs - 1); + if (dirty) + r600_context_dirty_block(ctx, block, dirty, num_regs - 1); } void r600_context_pipe_state_set_ps_resource(struct r600_context *ctx, struct r600_pipe_state *state, unsigned rid) @@ -1091,7 +1094,8 @@ static inline void r600_context_pipe_state_set_sampler(struct r600_context *ctx, } } - r600_context_dirty_block(ctx, block, dirty, 2); + if (dirty) + r600_context_dirty_block(ctx, block, dirty, 2); } static inline void r600_context_ps_partial_flush(struct r600_context *ctx) @@ -1135,8 +1139,8 @@ static inline void r600_context_pipe_state_set_sampler_border(struct r600_contex * will end up using the new border color. */ if (dirty & R600_BLOCK_STATUS_DIRTY) r600_context_ps_partial_flush(ctx); - - r600_context_dirty_block(ctx, block, dirty, 3); + if (dirty) + r600_context_dirty_block(ctx, block, dirty, 3); } void r600_context_pipe_state_set_ps_sampler(struct r600_context *ctx, struct r600_pipe_state *state, unsigned id) ___ mesa-commit mailing list mesa-c
Mesa (master): r600g: only call bo loop if nbos is positive.
Module: Mesa Branch: master Commit: eb4bb48ef41483750fa678ab21ef52accbf4e628 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=eb4bb48ef41483750fa678ab21ef52accbf4e628 Author: Dave Airlie Date: Mon Jun 6 11:15:10 2011 +1000 r600g: only call bo loop if nbos is positive. we don't need to loop over all the registers unless we have some bos in the block, also avoid setting the ctx flags, and move the optional stuff down below this chunk. Signed-off-by: Dave Airlie --- src/gallium/winsys/r600/drm/r600_hw_context.c | 36 +--- 1 files changed, 19 insertions(+), 17 deletions(-) diff --git a/src/gallium/winsys/r600/drm/r600_hw_context.c b/src/gallium/winsys/r600/drm/r600_hw_context.c index 4c21d60..1be4854 100644 --- a/src/gallium/winsys/r600/drm/r600_hw_context.c +++ b/src/gallium/winsys/r600/drm/r600_hw_context.c @@ -1183,31 +1183,33 @@ void r600_context_block_emit_dirty(struct r600_context *ctx, struct r600_block * { int id; int optional = block->nbo == 0 && !(block->flags & REG_FLAG_DIRTY_ALWAYS); - int cp_dwords = block->pm4_ndwords, start_dword; - int new_dwords; + int cp_dwords = block->pm4_ndwords, start_dword = 0; + int new_dwords = 0; if (block->nreg_dirty == 0 && optional) { goto out; } - optional &= (block->nreg_dirty != block->nreg); - - ctx->flags |= R600_CONTEXT_CHECK_EVENT_FLUSH; - for (int j = 0; j < block->nreg; j++) { - if (block->pm4_bo_index[j]) { - /* find relocation */ - id = block->pm4_bo_index[j]; - r600_context_bo_reloc(ctx, - &block->pm4[block->reloc[id].bo_pm4_index], - block->reloc[id].bo); - r600_context_bo_flush(ctx, - block->reloc[id].flush_flags, - block->reloc[id].flush_mask, - block->reloc[id].bo); + if (block->nbo) { + ctx->flags |= R600_CONTEXT_CHECK_EVENT_FLUSH; + + for (int j = 0; j < block->nreg; j++) { + if (block->pm4_bo_index[j]) { + /* find relocation */ + id = block->pm4_bo_index[j]; + r600_context_bo_reloc(ctx, + &block->pm4[block->reloc[id].bo_pm4_index], + block->reloc[id].bo); + r600_context_bo_flush(ctx, + block->reloc[id].flush_flags, + block->reloc[id].flush_mask, + block->reloc[id].bo); + } } + ctx->flags &= ~R600_CONTEXT_CHECK_EVENT_FLUSH; } - ctx->flags &= ~R600_CONTEXT_CHECK_EVENT_FLUSH; + optional &= (block->nreg_dirty != block->nreg); if (optional) { new_dwords = block->nreg_dirty; start_dword = ctx->pm4_cdwords; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): i915g: implement more opcodes.
Module: Mesa Branch: master Commit: 2292025c49f2165b59f578c926d320913b08b1b5 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=2292025c49f2165b59f578c926d320913b08b1b5 Author: Stéphane Marchesin Date: Mon Jun 6 12:32:17 2011 -0700 i915g: implement more opcodes. --- src/gallium/drivers/i915/i915_fpc_translate.c | 94 +--- 1 files changed, 82 insertions(+), 12 deletions(-) diff --git a/src/gallium/drivers/i915/i915_fpc_translate.c b/src/gallium/drivers/i915/i915_fpc_translate.c index 695a396..51766cd 100644 --- a/src/gallium/drivers/i915/i915_fpc_translate.c +++ b/src/gallium/drivers/i915/i915_fpc_translate.c @@ -501,6 +501,17 @@ i915_translate_instruction(struct i915_fp_compile *p, i915_emit_const4fv(p, cos_constants), 0); break; + case TGSI_OPCODE_DP2: + src0 = src_vector(p, &inst->Src[0]); + src1 = src_vector(p, &inst->Src[1]); + + i915_emit_arith(p, + A0_DP3, + get_result_vector(p, &inst->Dst[0]), + get_result_flags(inst), 0, + swizzle(src0, X, Y, ZERO, ZERO), src1, 0); + break; + case TGSI_OPCODE_DP3: emit_simple_arith(p, inst, A0_DP3, 2); break; @@ -706,7 +717,7 @@ i915_translate_instruction(struct i915_fp_compile *p, i915_emit_arith(p, A0_RCP, get_result_vector(p, &inst->Dst[0]), - get_result_flags(inst), 0, + get_result_flags(inst), 0, swizzle(src0, X, X, X, X), 0, 0); break; @@ -784,13 +795,36 @@ i915_translate_instruction(struct i915_fp_compile *p, } break; - case TGSI_OPCODE_SGE: - emit_simple_arith(p, inst, A0_SGE, 2); + case TGSI_OPCODE_SEQ: + /* if we're both >= and <= then we're == */ + src0 = src_vector(p, &inst->Src[0]); + src1 = src_vector(p, &inst->Src[1]); + tmp = i915_get_utemp(p); + + i915_emit_arith(p, + A0_SGE, + tmp, A0_DEST_CHANNEL_ALL, 0, + src0, + src1, 0); + + i915_emit_arith(p, + A0_SGE, + get_result_vector(p, &inst->Dst[0]), + A0_DEST_CHANNEL_ALL, 0, + src1, + src0, 0); + + i915_emit_arith(p, + A0_MUL, + get_result_vector(p, &inst->Dst[0]), + A0_DEST_CHANNEL_ALL, 0, + get_result_vector(p, &inst->Dst[0]), + tmp, 0); + break; - case TGSI_OPCODE_SLE: - /* like SGE, but swap reg0, reg1 */ - emit_simple_arith_swap2(p, inst, A0_SGE, 2); + case TGSI_OPCODE_SGE: + emit_simple_arith(p, inst, A0_SGE, 2); break; case TGSI_OPCODE_SIN: @@ -843,6 +877,11 @@ i915_translate_instruction(struct i915_fp_compile *p, i915_emit_const4fv(p, sin_constants), 0); break; + case TGSI_OPCODE_SLE: + /* like SGE, but swap reg0, reg1 */ + emit_simple_arith_swap2(p, inst, A0_SGE, 2); + break; + case TGSI_OPCODE_SLT: emit_simple_arith(p, inst, A0_SLT, 2); break; @@ -852,32 +891,59 @@ i915_translate_instruction(struct i915_fp_compile *p, emit_simple_arith_swap2(p, inst, A0_SLT, 2); break; - case TGSI_OPCODE_SEQ: - /* if we're both >= and <= then we're == */ + case TGSI_OPCODE_SNE: + /* if we're neither < nor > then we're != */ src0 = src_vector(p, &inst->Src[0]); src1 = src_vector(p, &inst->Src[1]); tmp = i915_get_utemp(p); i915_emit_arith(p, - A0_SGE, - tmp, A0_DEST_CHANNEL_ALL, 0, + A0_SLT, + tmp, + A0_DEST_CHANNEL_ALL, 0, src0, src1, 0); i915_emit_arith(p, - A0_SGE, + A0_SLT, get_result_vector(p, &inst->Dst[0]), A0_DEST_CHANNEL_ALL, 0, src1, src0, 0); i915_emit_arith(p, - A0_MUL, + A0_ADD, get_result_vector(p, &inst->Dst[0]), A0_DEST_CHANNEL_ALL, 0, get_result_vector(p, &inst->Dst[0]), tmp, 0); + break; + case TGSI_OPCODE_SSG: + /* compute (src>0) - (src<0) */ + src0 = src_vector(p, &inst->Src[0]); + tmp = i915_get_utemp(p); + + i915_emit_arith(p, + A0_SLT, + tmp, + A0_DEST_CHANNEL_ALL, 0, + src0, + swizzle(src0, ZERO, ZERO, ZERO, ZERO), 0); + + i915_emit_arith(p, + A0_SLT, +
Mesa (master): i915g: implement TGSI_OPCODE_SEQ.
Module: Mesa Branch: master Commit: 0f091333d1ef403a67a8639ac13d9a9bbe93092a URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0f091333d1ef403a67a8639ac13d9a9bbe93092a Author: Stéphane Marchesin Date: Fri Jun 3 18:57:16 2011 -0700 i915g: implement TGSI_OPCODE_SEQ. --- src/gallium/drivers/i915/i915_fpc_translate.c | 28 + 1 files changed, 28 insertions(+), 0 deletions(-) diff --git a/src/gallium/drivers/i915/i915_fpc_translate.c b/src/gallium/drivers/i915/i915_fpc_translate.c index 9f3c766..695a396 100644 --- a/src/gallium/drivers/i915/i915_fpc_translate.c +++ b/src/gallium/drivers/i915/i915_fpc_translate.c @@ -852,6 +852,34 @@ i915_translate_instruction(struct i915_fp_compile *p, emit_simple_arith_swap2(p, inst, A0_SLT, 2); break; + case TGSI_OPCODE_SEQ: + /* if we're both >= and <= then we're == */ + src0 = src_vector(p, &inst->Src[0]); + src1 = src_vector(p, &inst->Src[1]); + tmp = i915_get_utemp(p); + + i915_emit_arith(p, + A0_SGE, + tmp, A0_DEST_CHANNEL_ALL, 0, + src0, + src1, 0); + + i915_emit_arith(p, + A0_SGE, + get_result_vector(p, &inst->Dst[0]), + A0_DEST_CHANNEL_ALL, 0, + src1, + src0, 0); + + i915_emit_arith(p, + A0_MUL, + get_result_vector(p, &inst->Dst[0]), + A0_DEST_CHANNEL_ALL, 0, + get_result_vector(p, &inst->Dst[0]), + tmp, 0); + + break; + case TGSI_OPCODE_SUB: src0 = src_vector(p, &inst->Src[0]); src1 = src_vector(p, &inst->Src[1]); ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): i915g: handle varyings properly.
Module: Mesa Branch: master Commit: 0ce977a66e65ce862f5b29ded6098de91464f304 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0ce977a66e65ce862f5b29ded6098de91464f304 Author: Stéphane Marchesin Date: Fri Jun 3 17:06:59 2011 -0700 i915g: handle varyings properly. --- src/gallium/drivers/i915/i915_fpc_translate.c | 10 +++- src/gallium/drivers/i915/i915_state_derived.c | 26 ++-- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/src/gallium/drivers/i915/i915_fpc_translate.c b/src/gallium/drivers/i915/i915_fpc_translate.c index b145b58..9f3c766 100644 --- a/src/gallium/drivers/i915/i915_fpc_translate.c +++ b/src/gallium/drivers/i915/i915_fpc_translate.c @@ -192,8 +192,14 @@ src_vector(struct i915_fp_compile *p, src = swizzle(src, W, W, W, W); break; case TGSI_SEMANTIC_GENERIC: - /* usually a texcoord */ - src = i915_emit_decl(p, REG_TYPE_T, T_TEX0 + sem_ind, D0_CHANNEL_ALL); + if (sem_ind < 8) +/* a texcoord */ +src = i915_emit_decl(p, REG_TYPE_T, T_TEX0 + sem_ind, D0_CHANNEL_ALL); + else if ( (sem_ind >= 10) && (sem_ind < 18) ) +/* a varying */ +src = i915_emit_decl(p, REG_TYPE_T, T_TEX0 + sem_ind - 10, D0_CHANNEL_ALL); + else +debug_printf("%s: unhandled generic %d\n", __func__, sem_ind); break; default: i915_program_error(p, "Bad source->Index"); diff --git a/src/gallium/drivers/i915/i915_state_derived.c b/src/gallium/drivers/i915/i915_state_derived.c index 59ac2f7..47bea8b 100644 --- a/src/gallium/drivers/i915/i915_state_derived.c +++ b/src/gallium/drivers/i915/i915_state_derived.c @@ -46,12 +46,12 @@ static void calculate_vertex_layout(struct i915_context *i915) const struct i915_fragment_shader *fs = i915->fs; const enum interp_mode colorInterp = i915->rasterizer->color_interp; struct vertex_info vinfo; - boolean texCoords[8], colors[2], fog, needW; + boolean texCoords[8], colors[2], fog, needW, have_varyings; uint i; int src; memset(texCoords, 0, sizeof(texCoords)); - colors[0] = colors[1] = fog = needW = FALSE; + colors[0] = colors[1] = fog = needW = have_varyings = FALSE; memset(&vinfo, 0, sizeof(vinfo)); /* Determine which fragment program inputs are needed. Setup HW vertex @@ -66,10 +66,19 @@ static void calculate_vertex_layout(struct i915_context *i915) colors[fs->info.input_semantic_index[i]] = TRUE; break; case TGSI_SEMANTIC_GENERIC: - /* usually a texcoord */ { -const uint unit = fs->info.input_semantic_index[i]; +/* texcoords/varyings */ +/* XXX handle back/front face and point size */ +uint unit = fs->info.input_semantic_index[i]; + +/* Route varyings as tex coords */ +if ( (unit >= 10) && (unit < 18) ) { + have_varyings = TRUE; + unit -= 10; +} + assert(unit < 8); + texCoords[unit] = TRUE; needW = TRUE; } @@ -82,7 +91,7 @@ static void calculate_vertex_layout(struct i915_context *i915) } } - + /* pos */ src = draw_find_shader_output(i915->draw, TGSI_SEMANTIC_POSITION, 0); if (needW) { @@ -120,12 +129,15 @@ static void calculate_vertex_layout(struct i915_context *i915) vinfo.hwfmt[0] |= S4_VFMT_FOG_PARAM; } - /* texcoords */ + /* texcoords/varyings */ for (i = 0; i < 8; i++) { uint hwtc; if (texCoords[i]) { hwtc = TEXCOORDFMT_4D; - src = draw_find_shader_output(i915->draw, TGSI_SEMANTIC_GENERIC, i); + if (!have_varyings) +src = draw_find_shader_output(i915->draw, TGSI_SEMANTIC_GENERIC, i); + else +src = draw_find_shader_output(i915->draw, TGSI_SEMANTIC_GENERIC, i + 10); draw_emit_vertex_attr(&vinfo, EMIT_4F, INTERP_PERSPECTIVE, src); } else { ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): i915g: add missing and unsupported PIPE_CAPs to avoid debug messages.
Module: Mesa Branch: master Commit: 893b92adffe25a42468cb310dc5d13642472f0cb URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=893b92adffe25a42468cb310dc5d13642472f0cb Author: Stéphane Marchesin Date: Fri Jun 3 17:03:37 2011 -0700 i915g: add missing and unsupported PIPE_CAPs to avoid debug messages. --- src/gallium/drivers/i915/i915_screen.c |5 + 1 files changed, 5 insertions(+), 0 deletions(-) diff --git a/src/gallium/drivers/i915/i915_screen.c b/src/gallium/drivers/i915/i915_screen.c index da96b42..c86baa5 100644 --- a/src/gallium/drivers/i915/i915_screen.c +++ b/src/gallium/drivers/i915/i915_screen.c @@ -134,6 +134,11 @@ i915_get_param(struct pipe_screen *screen, enum pipe_cap cap) case PIPE_CAP_TEXTURE_MIRROR_CLAMP: case PIPE_CAP_TEXTURE_SWIZZLE: case PIPE_CAP_TIMER_QUERY: + case PIPE_CAP_SM3: + case PIPE_CAP_SEAMLESS_CUBE_MAP: + case PIPE_CAP_SEAMLESS_CUBE_MAP_PER_TEXTURE: + case PIPE_CAP_FRAGMENT_COLOR_CLAMP_CONTROL: + case PIPE_CAP_MIXED_COLORBUFFER_FORMATS: return 0; /* Features we can lie about (boolean caps). */ ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): Gallium: fix indentation in u_blitter.c
Module: Mesa Branch: master Commit: cec2082ae515bc91e6b29084ba4b8deac28ef923 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=cec2082ae515bc91e6b29084ba4b8deac28ef923 Author: Stéphane Marchesin Date: Wed Jun 1 20:51:59 2011 -0700 Gallium: fix indentation in u_blitter.c --- src/gallium/auxiliary/util/u_blitter.c |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/src/gallium/auxiliary/util/u_blitter.c b/src/gallium/auxiliary/util/u_blitter.c index a4c3990..528f344 100644 --- a/src/gallium/auxiliary/util/u_blitter.c +++ b/src/gallium/auxiliary/util/u_blitter.c @@ -770,7 +770,7 @@ void util_blitter_copy_region(struct blitter_context *blitter, /* Check if we can sample from and render to the surfaces. */ /* (assuming copying a stencil buffer is not possible) */ -if ((!ignore_stencil && is_stencil) || + if ((!ignore_stencil && is_stencil) || !screen->is_format_supported(screen, dst->format, dst->target, dst->nr_samples, bind) || !screen->is_format_supported(screen, src->format, src->target, ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): dri2: protect dri2FlushFrontBuffer against NULL buffers.
Module: Mesa Branch: master Commit: 3d3ecb8520ccca0863026a94e7fda9840aff6c0a URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=3d3ecb8520ccca0863026a94e7fda9840aff6c0a Author: Stéphane Marchesin Date: Fri Jun 3 17:03:09 2011 -0700 dri2: protect dri2FlushFrontBuffer against NULL buffers. --- src/glx/dri2_glx.c |6 ++ 1 files changed, 6 insertions(+), 0 deletions(-) diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c index 69b47ae..506754c 100644 --- a/src/glx/dri2_glx.c +++ b/src/glx/dri2_glx.c @@ -457,6 +457,12 @@ static void dri2FlushFrontBuffer(__DRIdrawable *driDrawable, void *loaderPrivate) { struct dri2_drawable *pdraw = loaderPrivate; + if (!pdraw) + return; + + if (!pdraw->base.psc) + return; + struct glx_display *priv = __glXInitialize(pdraw->base.psc->dpy); struct dri2_display *pdp = (struct dri2_display *)priv->dri2Display; struct glx_context *gc = __glXGetCurrentContext(); ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): i915g: don't destroy a texture buffer if it's NULL.
Module: Mesa Branch: master Commit: 3103c08ae91f6bcd42a223a5fe7f9d38746565c4 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=3103c08ae91f6bcd42a223a5fe7f9d38746565c4 Author: Stéphane Marchesin Date: Wed Jun 1 15:32:39 2011 -0700 i915g: don't destroy a texture buffer if it's NULL. --- src/gallium/drivers/i915/i915_resource_texture.c |3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/src/gallium/drivers/i915/i915_resource_texture.c b/src/gallium/drivers/i915/i915_resource_texture.c index e05b059..b74b19d 100644 --- a/src/gallium/drivers/i915/i915_resource_texture.c +++ b/src/gallium/drivers/i915/i915_resource_texture.c @@ -700,7 +700,8 @@ i915_texture_destroy(struct pipe_screen *screen, struct i915_winsys *iws = i915_screen(screen)->iws; uint i; - iws->buffer_destroy(iws, tex->buffer); + if (tex->buffer) + iws->buffer_destroy(iws, tex->buffer); for (i = 0; i < Elements(tex->image_offset); i++) if (tex->image_offset[i]) ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): llvmpipe: use $(CXX) instead of g++ for linking.
Module: Mesa Branch: master Commit: 1af8b7250f477cfb36cbd8d4885f0cfb9a2e9779 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=1af8b7250f477cfb36cbd8d4885f0cfb9a2e9779 Author: Stéphane Marchesin Date: Wed Jun 1 10:37:13 2011 -0700 llvmpipe: use $(CXX) instead of g++ for linking. This allows setting the path to the C++ compiler. --- src/gallium/drivers/llvmpipe/Makefile |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/src/gallium/drivers/llvmpipe/Makefile b/src/gallium/drivers/llvmpipe/Makefile index 4068bed..ba9705b 100644 --- a/src/gallium/drivers/llvmpipe/Makefile +++ b/src/gallium/drivers/llvmpipe/Makefile @@ -71,7 +71,7 @@ lp_tile_soa.c: lp_tile_soa.py ../../auxiliary/util/u_format_parse.py ../../auxil LDFLAGS += $(LLVM_LDFLAGS) LIBS += -L../../auxiliary/ -lgallium libllvmpipe.a $(LLVM_LIBS) $(GL_LIB_DEPS) -LD=g++ +LD=$(CXX) $(PROGS): lp_test_main.o libllvmpipe.a ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (glx2): i915g: implement more opcodes.
Module: Mesa Branch: glx2 Commit: 2292025c49f2165b59f578c926d320913b08b1b5 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=2292025c49f2165b59f578c926d320913b08b1b5 Author: Stéphane Marchesin Date: Mon Jun 6 12:32:17 2011 -0700 i915g: implement more opcodes. --- src/gallium/drivers/i915/i915_fpc_translate.c | 94 +--- 1 files changed, 82 insertions(+), 12 deletions(-) diff --git a/src/gallium/drivers/i915/i915_fpc_translate.c b/src/gallium/drivers/i915/i915_fpc_translate.c index 695a396..51766cd 100644 --- a/src/gallium/drivers/i915/i915_fpc_translate.c +++ b/src/gallium/drivers/i915/i915_fpc_translate.c @@ -501,6 +501,17 @@ i915_translate_instruction(struct i915_fp_compile *p, i915_emit_const4fv(p, cos_constants), 0); break; + case TGSI_OPCODE_DP2: + src0 = src_vector(p, &inst->Src[0]); + src1 = src_vector(p, &inst->Src[1]); + + i915_emit_arith(p, + A0_DP3, + get_result_vector(p, &inst->Dst[0]), + get_result_flags(inst), 0, + swizzle(src0, X, Y, ZERO, ZERO), src1, 0); + break; + case TGSI_OPCODE_DP3: emit_simple_arith(p, inst, A0_DP3, 2); break; @@ -706,7 +717,7 @@ i915_translate_instruction(struct i915_fp_compile *p, i915_emit_arith(p, A0_RCP, get_result_vector(p, &inst->Dst[0]), - get_result_flags(inst), 0, + get_result_flags(inst), 0, swizzle(src0, X, X, X, X), 0, 0); break; @@ -784,13 +795,36 @@ i915_translate_instruction(struct i915_fp_compile *p, } break; - case TGSI_OPCODE_SGE: - emit_simple_arith(p, inst, A0_SGE, 2); + case TGSI_OPCODE_SEQ: + /* if we're both >= and <= then we're == */ + src0 = src_vector(p, &inst->Src[0]); + src1 = src_vector(p, &inst->Src[1]); + tmp = i915_get_utemp(p); + + i915_emit_arith(p, + A0_SGE, + tmp, A0_DEST_CHANNEL_ALL, 0, + src0, + src1, 0); + + i915_emit_arith(p, + A0_SGE, + get_result_vector(p, &inst->Dst[0]), + A0_DEST_CHANNEL_ALL, 0, + src1, + src0, 0); + + i915_emit_arith(p, + A0_MUL, + get_result_vector(p, &inst->Dst[0]), + A0_DEST_CHANNEL_ALL, 0, + get_result_vector(p, &inst->Dst[0]), + tmp, 0); + break; - case TGSI_OPCODE_SLE: - /* like SGE, but swap reg0, reg1 */ - emit_simple_arith_swap2(p, inst, A0_SGE, 2); + case TGSI_OPCODE_SGE: + emit_simple_arith(p, inst, A0_SGE, 2); break; case TGSI_OPCODE_SIN: @@ -843,6 +877,11 @@ i915_translate_instruction(struct i915_fp_compile *p, i915_emit_const4fv(p, sin_constants), 0); break; + case TGSI_OPCODE_SLE: + /* like SGE, but swap reg0, reg1 */ + emit_simple_arith_swap2(p, inst, A0_SGE, 2); + break; + case TGSI_OPCODE_SLT: emit_simple_arith(p, inst, A0_SLT, 2); break; @@ -852,32 +891,59 @@ i915_translate_instruction(struct i915_fp_compile *p, emit_simple_arith_swap2(p, inst, A0_SLT, 2); break; - case TGSI_OPCODE_SEQ: - /* if we're both >= and <= then we're == */ + case TGSI_OPCODE_SNE: + /* if we're neither < nor > then we're != */ src0 = src_vector(p, &inst->Src[0]); src1 = src_vector(p, &inst->Src[1]); tmp = i915_get_utemp(p); i915_emit_arith(p, - A0_SGE, - tmp, A0_DEST_CHANNEL_ALL, 0, + A0_SLT, + tmp, + A0_DEST_CHANNEL_ALL, 0, src0, src1, 0); i915_emit_arith(p, - A0_SGE, + A0_SLT, get_result_vector(p, &inst->Dst[0]), A0_DEST_CHANNEL_ALL, 0, src1, src0, 0); i915_emit_arith(p, - A0_MUL, + A0_ADD, get_result_vector(p, &inst->Dst[0]), A0_DEST_CHANNEL_ALL, 0, get_result_vector(p, &inst->Dst[0]), tmp, 0); + break; + case TGSI_OPCODE_SSG: + /* compute (src>0) - (src<0) */ + src0 = src_vector(p, &inst->Src[0]); + tmp = i915_get_utemp(p); + + i915_emit_arith(p, + A0_SLT, + tmp, + A0_DEST_CHANNEL_ALL, 0, + src0, + swizzle(src0, ZERO, ZERO, ZERO, ZERO), 0); + + i915_emit_arith(p, + A0_SLT, +
Mesa (master): i965: Update SURFACE_STATE dumping for Ivybridge.
Module: Mesa Branch: master Commit: c2e659037f4d0687e948e3d17f2d950d3e2dae1b URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c2e659037f4d0687e948e3d17f2d950d3e2dae1b Author: Kenneth Graunke Date: Tue May 17 14:37:18 2011 -0700 i965: Update SURFACE_STATE dumping for Ivybridge. Signed-off-by: Kenneth Graunke --- src/mesa/drivers/dri/i965/brw_state_dump.c | 46 ++-- 1 files changed, 43 insertions(+), 3 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_state_dump.c b/src/mesa/drivers/dri/i965/brw_state_dump.c index 6d2d54f..ff06cb3 100644 --- a/src/mesa/drivers/dri/i965/brw_state_dump.c +++ b/src/mesa/drivers/dri/i965/brw_state_dump.c @@ -141,6 +141,44 @@ static void dump_wm_surface_state(struct brw_context *brw) drm_intel_bo_unmap(bo); } +static void dump_gen7_surface_state(struct brw_context *brw) +{ + dri_bo *bo; + GLubyte *base; + int i; + + bo = brw->intel.batch.bo; + drm_intel_bo_map(bo, GL_FALSE); + base = bo->virtual; + + for (i = 0; i < brw->wm.nr_surfaces; i++) { + unsigned int surfoff; + struct gen7_surface_state *surf; + char name[20]; + + if (brw->wm.surf_offset[i] == 0) { +fprintf(stderr, "WM SURF%d: NULL\n", i); +continue; + } + surfoff = bo->offset + brw->wm.surf_offset[i]; + surf = (struct gen7_surface_state *) (base + brw->wm.surf_offset[i]); + + sprintf(name, "WM SURF%d", i); + state_out(name, surf, surfoff, 0, "%s %s\n", + get_965_surfacetype(surf->ss0.surface_type), + get_965_surface_format(surf->ss0.surface_format)); + state_out(name, surf, surfoff, 1, "offset\n"); + state_out(name, surf, surfoff, 2, "%dx%d size, %d mips\n", + surf->ss2.width + 1, surf->ss2.height + 1, surf->ss5.mip_count); + state_out(name, surf, surfoff, 3, "pitch %d, %stiled\n", + surf->ss3.pitch + 1, surf->ss0.tiled_surface ? "" : "not "); + state_out(name, surf, surfoff, 4, "mip base %d\n", + surf->ss5.min_lod); + state_out(name, surf, surfoff, 5, "x,y offset: %d,%d\n", + surf->ss5.x_offset, surf->ss5.y_offset); + } + drm_intel_bo_unmap(bo); +} static void dump_wm_sampler_state(struct brw_context *brw) { @@ -469,11 +507,13 @@ void brw_debug_batch(struct intel_context *intel) brw->intel.batch.bo, brw->wm.bind_bo_offset, 4 * brw->wm.nr_surfaces); - dump_wm_surface_state(brw); - if (intel->gen < 7) + if (intel->gen < 7) { + dump_wm_surface_state(brw); dump_wm_sampler_state(brw); - else + } else { + dump_gen7_surface_state(brw); dump_gen7_sampler_state(brw); + } if (intel->gen < 6) state_struct_out("VS", intel->batch.bo, brw->vs.state_offset, ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): i965: Update SAMPLER_STATE dumping for Ivybridge.
Module: Mesa Branch: master Commit: 4ba9cfe4b8b9690ec3d9e62dd2a15616428339ac URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=4ba9cfe4b8b9690ec3d9e62dd2a15616428339ac Author: Kenneth Graunke Date: Tue May 17 14:22:16 2011 -0700 i965: Update SAMPLER_STATE dumping for Ivybridge. Signed-off-by: Kenneth Graunke --- src/mesa/drivers/dri/i965/brw_state_dump.c | 54 +++- 1 files changed, 53 insertions(+), 1 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_state_dump.c b/src/mesa/drivers/dri/i965/brw_state_dump.c index b520e64..6d2d54f 100644 --- a/src/mesa/drivers/dri/i965/brw_state_dump.c +++ b/src/mesa/drivers/dri/i965/brw_state_dump.c @@ -148,6 +148,8 @@ static void dump_wm_sampler_state(struct brw_context *brw) struct gl_context *ctx = &brw->intel.ctx; int i; + assert(intel->gen < 7); + drm_intel_bo_map(intel->batch.bo, GL_FALSE); for (i = 0; i < BRW_MAX_TEX_UNIT; i++) { unsigned int offset; @@ -203,6 +205,53 @@ static void dump_wm_sampler_state(struct brw_context *brw) drm_intel_bo_unmap(intel->batch.bo); } +static void dump_gen7_sampler_state(struct brw_context *brw) +{ + struct intel_context *intel = &brw->intel; + struct gl_context *ctx = &brw->intel.ctx; + int i; + + assert(intel->gen >= 7); + + drm_intel_bo_map(intel->batch.bo, GL_FALSE); + for (i = 0; i < BRW_MAX_TEX_UNIT; i++) { + unsigned int offset; + uint32_t sdc_offset; + struct gen7_sampler_state *samp; + char name[20]; + + if (!ctx->Texture.Unit[i]._ReallyEnabled) { +fprintf(stderr, "WM SAMP%d: disabled\n", i); +continue; + } + + offset = (intel->batch.bo->offset + + brw->wm.sampler_offset + + i * sizeof(struct gen7_sampler_state)); + samp = (struct gen7_sampler_state *) +(intel->batch.bo->virtual + brw->wm.sampler_offset + + i * sizeof(struct gen7_sampler_state)); + + sprintf(name, "WM SAMP%d", i); + state_out(name, samp, offset, 0, "filtering\n"); + state_out(name, samp, offset, 1, "wrapping, lod\n"); + state_out(name, samp, offset, 2, "default color pointer\n"); + state_out(name, samp, offset, 3, "chroma key, aniso\n"); + + sprintf(name, " WM SDC%d", i); + + sdc_offset = intel->batch.bo->offset + brw->wm.sdc_offset[i]; + struct brw_sampler_default_color *sdc = +intel->batch.bo->virtual + brw->wm.sdc_offset[i]; + state_out(name, sdc, sdc_offset, 0, "r %f\n", sdc->color[0]); + state_out(name, sdc, sdc_offset, 1, "g %f\n", sdc->color[1]); + state_out(name, sdc, sdc_offset, 2, "b %f\n", sdc->color[2]); + state_out(name, sdc, sdc_offset, 3, "a %f\n", sdc->color[3]); + } + drm_intel_bo_unmap(intel->batch.bo); +} + + static void dump_sf_viewport_state(struct brw_context *brw) { struct intel_context *intel = &brw->intel; @@ -421,7 +470,10 @@ void brw_debug_batch(struct intel_context *intel) brw->wm.bind_bo_offset, 4 * brw->wm.nr_surfaces); dump_wm_surface_state(brw); - dump_wm_sampler_state(brw); + if (intel->gen < 7) + dump_wm_sampler_state(brw); + else + dump_gen7_sampler_state(brw); if (intel->gen < 6) state_struct_out("VS", intel->batch.bo, brw->vs.state_offset, ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): i965: Update SF_CLIP_VIEWPORT state dumping for Ivybridge.
Module: Mesa Branch: master Commit: f9a3200adb1bc70f789c829661a92e3d24023dcf URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=f9a3200adb1bc70f789c829661a92e3d24023dcf Author: Kenneth Graunke Date: Tue May 17 14:28:20 2011 -0700 i965: Update SF_CLIP_VIEWPORT state dumping for Ivybridge. Signed-off-by: Kenneth Graunke --- src/mesa/drivers/dri/i965/brw_state_dump.c | 40 ++- 1 files changed, 38 insertions(+), 2 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_state_dump.c b/src/mesa/drivers/dri/i965/brw_state_dump.c index ef58619..b520e64 100644 --- a/src/mesa/drivers/dri/i965/brw_state_dump.c +++ b/src/mesa/drivers/dri/i965/brw_state_dump.c @@ -210,6 +210,8 @@ static void dump_sf_viewport_state(struct brw_context *brw) struct brw_sf_viewport *vp; uint32_t vp_off; + assert(intel->gen < 7); + drm_intel_bo_map(intel->batch.bo, GL_FALSE); vp = intel->batch.bo->virtual + brw->sf.vp_offset; @@ -237,6 +239,8 @@ static void dump_clip_viewport_state(struct brw_context *brw) struct brw_clipper_viewport *vp; uint32_t vp_off; + assert(intel->gen < 7); + drm_intel_bo_map(intel->batch.bo, GL_FALSE); vp = intel->batch.bo->virtual + brw->clip.vp_offset; @@ -249,6 +253,34 @@ static void dump_clip_viewport_state(struct brw_context *brw) drm_intel_bo_unmap(intel->batch.bo); } +static void dump_sf_clip_viewport_state(struct brw_context *brw) +{ + struct intel_context *intel = &brw->intel; + const char *name = "SF_CLIP VP"; + struct gen7_sf_clip_viewport *vp; + uint32_t vp_off; + + assert(intel->gen >= 7); + + drm_intel_bo_map(intel->batch.bo, GL_FALSE); + + vp = intel->batch.bo->virtual + brw->sf.vp_offset; + vp_off = intel->batch.bo->offset + brw->sf.vp_offset; + + state_out(name, vp, vp_off, 0, "m00 = %f\n", vp->viewport.m00); + state_out(name, vp, vp_off, 1, "m11 = %f\n", vp->viewport.m11); + state_out(name, vp, vp_off, 2, "m22 = %f\n", vp->viewport.m22); + state_out(name, vp, vp_off, 3, "m30 = %f\n", vp->viewport.m30); + state_out(name, vp, vp_off, 4, "m31 = %f\n", vp->viewport.m31); + state_out(name, vp, vp_off, 5, "m32 = %f\n", vp->viewport.m32); + state_out(name, vp, vp_off, 6, "guardband xmin = %f\n", vp->guardband.xmin); + state_out(name, vp, vp_off, 7, "guardband xmax = %f\n", vp->guardband.xmax); + state_out(name, vp, vp_off, 8, "guardband ymin = %f\n", vp->guardband.ymin); + state_out(name, vp, vp_off, 9, "guardband ymax = %f\n", vp->guardband.ymax); + drm_intel_bo_unmap(intel->batch.bo); +} + + static void dump_cc_viewport_state(struct brw_context *brw) { struct intel_context *intel = &brw->intel; @@ -406,7 +438,12 @@ void brw_debug_batch(struct intel_context *intel) sizeof(struct brw_sf_unit_state)); brw_debug_prog("SF prog", brw->sf.prog_bo); } - dump_sf_viewport_state(brw); + if (intel->gen >= 7) + dump_sf_clip_viewport_state(brw); + else + dump_sf_viewport_state(brw); + if (intel->gen == 6) + dump_clip_viewport_state(brw); if (intel->gen < 6) state_struct_out("WM", intel->batch.bo, brw->wm.state_offset, @@ -415,7 +452,6 @@ void brw_debug_batch(struct intel_context *intel) if (intel->gen >= 6) { dump_cc_viewport_state(brw); - dump_clip_viewport_state(brw); dump_depth_stencil_state(brw); dump_cc_state(brw); dump_blend_state(brw); ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (7.10): apple: Package applegl source into MesaLib tarball
Module: Mesa Branch: 7.10 Commit: 1a79cde8fa6c03704bc602d072876a396abddd3e URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=1a79cde8fa6c03704bc602d072876a396abddd3e Author: Jeremy Huddleston Date: Mon Jun 6 12:48:08 2011 -0400 apple: Package applegl source into MesaLib tarball Signed-off-by: Jeremy Huddleston (cherry picked from commit e5d241ddb231758e0a0f41eee28435d170d583c0) --- Makefile | 12 1 files changed, 12 insertions(+), 0 deletions(-) diff --git a/Makefile b/Makefile index 52c0b95..c84e384 100644 --- a/Makefile +++ b/Makefile @@ -353,12 +353,24 @@ GALLIUM_FILES = \ $(DIRECTORY)/src/gallium/*/*/*/*.[ch] \ $(DIRECTORY)/src/gallium/*/*/*/*.py +APPLE_DRI_FILES = \ + $(DIRECTORY)/src/glx/apple/Makefile \ + $(DIRECTORY)/src/glx/apple/*.[ch] \ + $(DIRECTORY)/src/glx/apple/*.tcl\ + $(DIRECTORY)/src/glx/apple/apple_exports.list \ + $(DIRECTORY)/src/glx/apple/GL_aliases \ + $(DIRECTORY)/src/glx/apple/GL_extensions\ + $(DIRECTORY)/src/glx/apple/GL_noop \ + $(DIRECTORY)/src/glx/apple/GL_promoted \ + $(DIRECTORY)/src/glx/apple/specs/*.spec \ + $(DIRECTORY)/src/glx/apple/specs/*.tm DRI_FILES = \ $(DIRECTORY)/include/GL/internal/dri_interface.h\ $(DIRECTORY)/include/GL/internal/sarea.h\ $(DIRECTORY)/src/glx/Makefile \ $(DIRECTORY)/src/glx/*.[ch] \ + $(APPLE_DRI_FILES) \ $(DIRECTORY)/src/mesa/drivers/dri/Makefile \ $(DIRECTORY)/src/mesa/drivers/dri/Makefile.template \ $(DIRECTORY)/src/mesa/drivers/dri/dri.pc.in \ ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): apple: Package applegl source into MesaLib tarball
Module: Mesa Branch: master Commit: e5d241ddb231758e0a0f41eee28435d170d583c0 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e5d241ddb231758e0a0f41eee28435d170d583c0 Author: Jeremy Huddleston Date: Mon Jun 6 12:48:08 2011 -0400 apple: Package applegl source into MesaLib tarball Signed-off-by: Jeremy Huddleston --- Makefile | 12 1 files changed, 12 insertions(+), 0 deletions(-) diff --git a/Makefile b/Makefile index 7a5dae7..f3c0a20 100644 --- a/Makefile +++ b/Makefile @@ -364,12 +364,24 @@ GALLIUM_FILES = \ $(DIRECTORY)/src/gallium/*/*/*/*.[ch] \ $(DIRECTORY)/src/gallium/*/*/*/*.py +APPLE_DRI_FILES = \ + $(DIRECTORY)/src/glx/apple/Makefile \ + $(DIRECTORY)/src/glx/apple/*.[ch] \ + $(DIRECTORY)/src/glx/apple/*.tcl\ + $(DIRECTORY)/src/glx/apple/apple_exports.list \ + $(DIRECTORY)/src/glx/apple/GL_aliases \ + $(DIRECTORY)/src/glx/apple/GL_extensions\ + $(DIRECTORY)/src/glx/apple/GL_noop \ + $(DIRECTORY)/src/glx/apple/GL_promoted \ + $(DIRECTORY)/src/glx/apple/specs/*.spec \ + $(DIRECTORY)/src/glx/apple/specs/*.tm DRI_FILES = \ $(DIRECTORY)/include/GL/internal/dri_interface.h\ $(DIRECTORY)/include/GL/internal/sarea.h\ $(DIRECTORY)/src/glx/Makefile \ $(DIRECTORY)/src/glx/*.[ch] \ + $(APPLE_DRI_FILES) \ $(DIRECTORY)/src/mesa/drivers/dri/Makefile \ $(DIRECTORY)/src/mesa/drivers/dri/Makefile.template \ $(DIRECTORY)/src/mesa/drivers/dri/dri.pc.in \ ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (7.10): darwin: Define GALLIUM_DRIVERS_DIRS in darwin config
Module: Mesa Branch: 7.10 Commit: 4d934efa193a2c3c37e59cfbf5ce68e195868664 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=4d934efa193a2c3c37e59cfbf5ce68e195868664 Author: Jeremy Huddleston Date: Mon Jun 6 11:38:05 2011 -0400 darwin: Define GALLIUM_DRIVERS_DIRS in darwin config Signed-off-by: Jeremy Huddleston (cherry picked from commit d563009cd1134557178c29d45b664e58bbed) --- configs/darwin |2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/configs/darwin b/configs/darwin index 9906107..9c126ea 100644 --- a/configs/darwin +++ b/configs/darwin @@ -57,3 +57,5 @@ GLU_DIRS = sgi DRIVER_DIRS = osmesa #DRIVER_DIRS = dri DRI_DIRS = swrast +GALLIUM_DRIVERS_DIRS = softpipe trace rbug noop identity galahad failover +#GALLIUM_DRIVERS_DIRS += llvmpipe ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (7.10): apple: Fix build failures in applegl_glx.c
Module: Mesa Branch: 7.10 Commit: aba30d8fbea49266cfa6d55a40d4f612ed8b4816 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=aba30d8fbea49266cfa6d55a40d4f612ed8b4816 Author: Jeremy Huddleston Date: Sun Jun 5 21:19:40 2011 -0400 apple: Fix build failures in applegl_glx.c See https://bugs.freedesktop.org/show_bug.cgi?id=29162 Signed-off-by: Jeremy Huddleston This commit squashes three cherry-picks: (cherry picked from commit 5d35343d12ab462100c9eec50a579b73463e465a) (cherry picked from commit 7c5f37c032231ad144a8a5c5a0b18f3e26c0aea7) (cherry picked from commit 2ee5272e1671aff8c8d9e0c12bf37ed006717283) --- src/glx/apple/Makefile |3 ++- src/glx/applegl_glx.c | 45 + 2 files changed, 31 insertions(+), 17 deletions(-) diff --git a/src/glx/apple/Makefile b/src/glx/apple/Makefile index 757e811..1196701 100644 --- a/src/glx/apple/Makefile +++ b/src/glx/apple/Makefile @@ -49,7 +49,8 @@ SOURCES = \ ../glxextensions.c \ glxreply.c \ ../pixel.c \ - ../xfont.c + ../xfont.c \ + ../applegl_glx.c include $(TOP)/src/mesa/sources.mak diff --git a/src/glx/applegl_glx.c b/src/glx/applegl_glx.c index 3da1f19..9b8605f 100644 --- a/src/glx/applegl_glx.c +++ b/src/glx/applegl_glx.c @@ -1,5 +1,6 @@ /* * Copyright © 2010 Intel Corporation + * Copyright © 2011 Apple Inc. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Soft- @@ -32,6 +33,13 @@ #if defined(GLX_USE_APPLEGL) +#include + +#include "glxclient.h" +#include "apple_glx_context.h" +#include "apple_glx.h" +#include "glx_error.h" + static void applegl_destroy_context(struct glx_context *gc) { @@ -42,13 +50,14 @@ static int applegl_bind_context(struct glx_context *gc, struct glx_context *old, GLXDrawable draw, GLXDrawable read) { + Display *dpy = gc->psc->dpy; bool error = apple_glx_make_current_context(dpy, - (oldGC && oldGC != &dummyContext) ? oldGC->driContext : NUL~ + (old && old != &dummyContext) ? old->driContext : NULL, gc ? gc->driContext : NULL, draw); apple_glx_diagnostic("%s: error %s\n", __func__, error ? "YES" : "NO"); if (error) - return GLXBadContext; + return 1; /* GLXBadContext is the same as Success (0) */ return Success; } @@ -67,7 +76,8 @@ applegl_wait_gl(struct glx_context *gc) static void applegl_wait_x(struct glx_context *gc) { - apple_glx_waitx(gc->dpy, gc->driContext); + Display *dpy = gc->psc->dpy; + apple_glx_waitx(dpy, gc->driContext); } static const struct glx_context_vtable applegl_context_vtable = { @@ -81,24 +91,25 @@ static const struct glx_context_vtable applegl_context_vtable = { NULL, /* release_tex_image, */ }; -static struct glx_context * +struct glx_context * applegl_create_context(struct glx_screen *psc, - struct glx_config *mode, + struct glx_config *config, struct glx_context *shareList, int renderType) { struct glx_context *gc; int errorcode; bool x11error; + Display *dpy = psc->dpy; + int screen = psc->scr; /* TODO: Integrate this with apple_glx_create_context and make * struct apple_glx_context inherit from struct glx_context. */ - gc = Xmalloc(sizeof *gc); - if (pcp == NULL) + gc = Xcalloc(1, sizeof (*gc)); + if (gc == NULL) return NULL; - memset(gc, 0, sizeof *gc); - if (!glx_context_init(&gc->base, &psc->base, mode)) { + if (!glx_context_init(gc, psc, config)) { Xfree(gc); return NULL; } @@ -108,7 +119,7 @@ applegl_create_context(struct glx_screen *psc, gc->do_destroy = False; /* TODO: darwin: Integrate with above to do indirect */ - if(apple_glx_create_context(&gc->driContext, dpy, screen, fbconfig, + if(apple_glx_create_context(&gc->driContext, dpy, screen, config, shareList ? shareList->driContext : NULL, &errorcode, &x11error)) { __glXSendError(dpy, errorcode, 0, X_GLXCreateContext, x11error); @@ -117,15 +128,15 @@ applegl_create_context(struct glx_screen *psc, } gc->currentContextTag = -1; - gc->mode = fbconfig; - gc->isDirect = allowDirect; + gc->config = config; + gc->isDirect = GL_TRUE; gc->xid = 1; /* Just something not None, so we know when to destroy * it in MakeContextCurrent. */ return gc; } -struct glx_screen_vtable appegl_screen_vtable = { +struct glx_screen_vtable applegl_screen_vtable = { applegl_create_context }; @@ -146,10 +157,12 @@ applegl_create_screen(int screen, struct glx_display * priv) } _X_HIDDEN int -applegl_create_display(struct glx_display *display) +applegl_create_display(struct glx_d
Mesa (7.10): apple: Build darwin using applegl rather than indirect
Module: Mesa Branch: 7.10 Commit: 4e18ad9d715fcd24675144b69db1929743f59447 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=4e18ad9d715fcd24675144b69db1929743f59447 Author: Jeremy Huddleston Date: Sun Jun 5 18:50:55 2011 -0400 apple: Build darwin using applegl rather than indirect This reverts portions of 6849916170c0275c13510251a7b217c20f2b993e that caused the darwin config to fail to build due to missing implementations in that commit. See https://bugs.freedesktop.org/show_bug.cgi?id=29162 Signed-off-by: Jeremy Huddleston (cherry picked from commit 1885cf27c9c4642a049c60a8236cb84735cb9eba) --- src/glx/glxclient.h | 12 src/glx/glxcmds.c |4 src/glx/glxext.c|7 --- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/glx/glxclient.h b/src/glx/glxclient.h index c7c8228..2152e16 100644 --- a/src/glx/glxclient.h +++ b/src/glx/glxclient.h @@ -775,7 +775,19 @@ GarbageCollectDRIDrawables(struct glx_screen *psc); extern __GLXDRIdrawable * GetGLXDRIDrawable(Display *dpy, GLXDrawable drawable); +#endif + +#ifdef GLX_USE_APPLEGL +extern struct glx_screen * +applegl_create_screen(int screen, struct glx_display * priv); + +extern struct glx_context * +applegl_create_context(struct glx_screen *psc, + struct glx_config *mode, + struct glx_context *shareList, int renderType); +extern int +applegl_create_display(struct glx_display *display); #endif extern struct glx_context dummyContext; diff --git a/src/glx/glxcmds.c b/src/glx/glxcmds.c index 0d41fe0..55fdeb6 100644 --- a/src/glx/glxcmds.c +++ b/src/glx/glxcmds.c @@ -228,10 +228,14 @@ CreateContext(Display * dpy, int generic_id, return NULL; gc = NULL; +#ifdef GLX_USE_APPLEGL + gc = applegl_create_context(psc, config, shareList, renderType); +#else if (allowDirect && psc->vtable->create_context) gc = psc->vtable->create_context(psc, config, shareList, renderType); if (!gc) gc = indirect_create_context(psc, config, shareList, renderType); +#endif if (!gc) return NULL; diff --git a/src/glx/glxext.c b/src/glx/glxext.c index 120a4b7..7fd710c 100644 --- a/src/glx/glxext.c +++ b/src/glx/glxext.c @@ -769,11 +769,12 @@ AllocAndFetchScreenConfigs(Display * dpy, struct glx_display * priv) psc = (*priv->driswDisplay->createScreen) (i, priv); #endif #if defined(GLX_USE_APPLEGL) - if (psc == NULL && priv->appleglDisplay) -psc = (*priv->appleglDisplay->createScreen) (i, priv); -#endif + if (psc == NULL) + psc = applegl_create_screen(i, priv); +#else if (psc == NULL) psc = indirect_create_screen(i, priv); +#endif priv->screens[i] = psc; } SyncHandle(); ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (7.10): apple: ifdef out come glapi-foo on darwin
Module: Mesa Branch: 7.10 Commit: 891ce8aaa875cd196e5754ba302bbfcc90d0fcf2 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=891ce8aaa875cd196e5754ba302bbfcc90d0fcf2 Author: Jeremy Huddleston Date: Sun Jun 5 19:57:52 2011 -0400 apple: ifdef out come glapi-foo on darwin Signed-off-by: Jeremy Huddleston (cherry picked from commit 8593bb32eae5368c1ba52504133b0bf200bf8e74) --- src/glx/glxcurrent.c |4 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/src/glx/glxcurrent.c b/src/glx/glxcurrent.c index 3631738..ce9d778 100644 --- a/src/glx/glxcurrent.c +++ b/src/glx/glxcurrent.c @@ -234,6 +234,7 @@ MakeContextCurrent(Display * dpy, GLXDrawable draw, return False; } +#ifndef GLX_USE_APPLEGL _glapi_check_multithread(); if (gc != NULL && gc->thread_id != 0 && gc->thread_id != _glthread_GetID()) { @@ -241,6 +242,7 @@ MakeContextCurrent(Display * dpy, GLXDrawable draw, BadAccess, X_GLXMakeContextCurrent); return False; } +#endif if (oldGC == gc && gc->currentDrawable == draw && gc->currentReadable == read) @@ -258,7 +260,9 @@ MakeContextCurrent(Display * dpy, GLXDrawable draw, gc->currentDpy = dpy; gc->currentDrawable = draw; gc->currentReadable = read; +#ifndef GLX_USE_APPLEGL gc->thread_id = _glthread_GetID(); +#endif __glXSetCurrentContext(gc); ret = gc->vtable->bind(gc, oldGC, draw, read); } else { ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (7.10): glx: Dead code removal
Module: Mesa Branch: 7.10 Commit: 12537b0baf6c7e28ece07bf198342669bc9c5533 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=12537b0baf6c7e28ece07bf198342669bc9c5533 Author: Jeremy Huddleston Date: Sun Jun 5 19:55:51 2011 -0400 glx: Dead code removal Remove a redundant ifndef GLX_USE_APPLEGL Signed-off-by: Jeremy Huddleston (cherry picked from commit 3843bbcb4ca4de232dbae6ba3ae619ddfc93508b) --- src/glx/glxcurrent.c |2 -- 1 files changed, 0 insertions(+), 2 deletions(-) diff --git a/src/glx/glxcurrent.c b/src/glx/glxcurrent.c index ce9d778..4b1133c 100644 --- a/src/glx/glxcurrent.c +++ b/src/glx/glxcurrent.c @@ -160,12 +160,10 @@ _X_HIDDEN void __glXSetCurrentContextNull(void) { __glXSetCurrentContext(&dummyContext); -#ifndef GLX_USE_APPLEGL #if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) _glapi_set_dispatch(NULL); /* no-op functions */ _glapi_set_context(NULL); #endif -#endif } _X_EXPORT GLXContext ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (7.10): apple: Change from XExtDisplayInfo to struct glx_display
Module: Mesa Branch: 7.10 Commit: 0f11d05e81fde1bd626514b4e3cc8849895d2418 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0f11d05e81fde1bd626514b4e3cc8849895d2418 Author: Jeremy Huddleston Date: Sun Jun 5 19:26:19 2011 -0400 apple: Change from XExtDisplayInfo to struct glx_display Fixes regression introduced by: ab434f6b7641a64d30725a9ac24929240362d466 and c356f5867f2c1fad7155df538b9affa8dbdcf869 Signed-off-by: Jeremy Huddleston (cherry picked from commit 7cdf969527fa6d753ad2eb3dd971fe16725eb440) --- src/glx/apple/glx_error.c | 10 ++ 1 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/glx/apple/glx_error.c b/src/glx/apple/glx_error.c index b3a071c..d44a80c 100644 --- a/src/glx/apple/glx_error.c +++ b/src/glx/apple/glx_error.c @@ -27,22 +27,24 @@ prior written authorization. */ #include +#include #include #include #include #include "glxclient.h" #include "glx_error.h" -extern XExtDisplayInfo *__glXFindDisplay(Display * dpy); - void __glXSendError(Display * dpy, int errorCode, unsigned long resourceID, unsigned long minorCode, bool coreX11error) { - XExtDisplayInfo *info = __glXFindDisplay(dpy); + struct glx_display *glx_dpy = __glXInitialize(dpy); struct glx_context *gc = __glXGetCurrentContext(); xError error; + assert(glx_dpy); + assert(gc); + LockDisplay(dpy); error.type = X_Error; @@ -51,7 +53,7 @@ __glXSendError(Display * dpy, int errorCode, unsigned long resourceID, error.errorCode = errorCode; } else { - error.errorCode = info->codes->first_error + errorCode; + error.errorCode = glx_dpy->codes->first_error + errorCode; } error.sequenceNumber = dpy->request; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (7.10): apple: Rename GLXcontext
Module: Mesa Branch: 7.10 Commit: 160552511184ff4c89a96a1f799f044ea3ad1006 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=160552511184ff4c89a96a1f799f044ea3ad1006 Author: Jeremy Huddleston Date: Sun Jun 5 18:22:47 2011 -0400 apple: Rename GLXcontext Fixes regression introduced by: c356f5867f2c1fad7155df538b9affa8dbdcf869 Signed-off-by: Jeremy Huddleston (cherry picked from commit 279e471750e3ee6a4841ebf16ef2d038e1c12077) --- src/glx/glxcmds.c |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/src/glx/glxcmds.c b/src/glx/glxcmds.c index f26ba1d..0d41fe0 100644 --- a/src/glx/glxcmds.c +++ b/src/glx/glxcmds.c @@ -710,7 +710,7 @@ _X_EXPORT void glXSwapBuffers(Display * dpy, GLXDrawable drawable) { #ifdef GLX_USE_APPLEGL - GLXContext gc = glXGetCurrentContext(); + struct glx_context * gc = __glXGetCurrentContext(); if(gc && apple_glx_is_current_drawable(dpy, gc->driContext, drawable)) { apple_glx_swap_buffers(gc->driContext); } else { ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (7.10): apple: Rename _gl_context_modes_find_visual to glx_config_find_visual
Module: Mesa Branch: 7.10 Commit: d92931467da389433ca77cdb040a72a6962f9ba4 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=d92931467da389433ca77cdb040a72a6962f9ba4 Author: Jeremy Huddleston Date: Sun Jun 5 18:19:59 2011 -0400 apple: Rename _gl_context_modes_find_visual to glx_config_find_visual Fixes regression introduced by: 6ddf66e9230ee862ac341c4767cf6b3b2dd2552b Signed-off-by: Jeremy Huddleston (cherry picked from commit b7f0ed8444544b7fc927823a903db93ebf723cad) --- src/glx/glxcmds.c |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/src/glx/glxcmds.c b/src/glx/glxcmds.c index d9ca3f5..f26ba1d 100644 --- a/src/glx/glxcmds.c +++ b/src/glx/glxcmds.c @@ -606,7 +606,7 @@ glXCreateGLXPixmap(Display * dpy, XVisualInfo * vis, Pixmap pixmap) struct glx_screen *const psc = GetGLXScreenConfigs(dpy, screen); const struct glx_config *config; - config = _gl_context_modes_find_visual(psc->visuals, vis->visualid); + config = glx_config_find_visual(psc->visuals, vis->visualid); if(apple_glx_pixmap_create(dpy, vis->screen, pixmap, config)) return None; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (7.10): apple: Re-add driContext and do_destroy
Module: Mesa Branch: 7.10 Commit: ee004cc681556b6f305676c66488ebdba933dbd6 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ee004cc681556b6f305676c66488ebdba933dbd6 Author: Jeremy Huddleston Date: Sun Jun 5 18:02:44 2011 -0400 apple: Re-add driContext and do_destroy Fixes regression introduced by: c491e585e43d48a2aeec96ccc4008da6c443fb42 Signed-off-by: Jeremy Huddleston (cherry picked from commit 488d6c739f5b6cdfa2c670322057c699644d4e52) --- src/glx/glxclient.h |5 + 1 files changed, 5 insertions(+), 0 deletions(-) diff --git a/src/glx/glxclient.h b/src/glx/glxclient.h index 36a0808..c7c8228 100644 --- a/src/glx/glxclient.h +++ b/src/glx/glxclient.h @@ -341,6 +341,11 @@ struct glx_context */ Bool isDirect; +#if defined(GLX_DIRECT_RENDERING) && defined(GLX_USE_APPLEGL) + void *driContext; + Bool do_destroy; +#endif + /** * \c dpy of current display for this context. Will be \c NULL if not * current to any display, or if this is the "dummy context". ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (7.10): apple: Rename GLXcontext
Module: Mesa Branch: 7.10 Commit: 60291c079877c6f1441c3d2b1103e90de2c2abd9 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=60291c079877c6f1441c3d2b1103e90de2c2abd9 Author: Jeremy Huddleston Date: Sun Jun 5 17:22:56 2011 -0400 apple: Rename GLXcontext Fixes regression introduced by: c356f5867f2c1fad7155df538b9affa8dbdcf869 Signed-off-by: Jeremy Huddleston (cherry picked from commit 22613d1670e3aafcfd3b95191b908a0adabe3eb9) --- src/glx/apple/apple_xgl_api_read.c |4 ++-- src/glx/apple/apple_xgl_api_stereo.c |4 ++-- src/glx/apple/apple_xgl_api_viewport.c |2 +- src/glx/apple/glx_error.c |2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/glx/apple/apple_xgl_api_read.c b/src/glx/apple/apple_xgl_api_read.c index 0798f45..45850b9 100644 --- a/src/glx/apple/apple_xgl_api_read.c +++ b/src/glx/apple/apple_xgl_api_read.c @@ -48,7 +48,7 @@ struct apple_xgl_saved_state static void SetRead(struct apple_xgl_saved_state *saved) { - GLXContext gc = __glXGetCurrentContext(); + struct glx_context *gc = __glXGetCurrentContext(); /* * By default indicate that the state was not swapped, so that UnsetRead @@ -81,7 +81,7 @@ static void UnsetRead(struct apple_xgl_saved_state *saved) { if (saved->swapped) { - GLXContext gc = __glXGetCurrentContext(); + struct glx_context *gc = __glXGetCurrentContext(); Display *dpy = glXGetCurrentDisplay(); if (apple_glx_make_current_context(dpy, gc->driContext, gc->driContext, diff --git a/src/glx/apple/apple_xgl_api_stereo.c b/src/glx/apple/apple_xgl_api_stereo.c index 64a15f7..5637dd4 100644 --- a/src/glx/apple/apple_xgl_api_stereo.c +++ b/src/glx/apple/apple_xgl_api_stereo.c @@ -49,7 +49,7 @@ extern struct apple_xgl_api __gl_api; void glDrawBuffer(GLenum mode) { - GLXContext gc = glXGetCurrentContext(); + struct glx_context * gc = __glXGetCurrentContext(); if (gc && apple_glx_context_uses_stereo(gc->driContext)) { GLenum buf[2]; @@ -84,7 +84,7 @@ glDrawBuffer(GLenum mode) void glDrawBuffers(GLsizei n, const GLenum * bufs) { - GLXContext gc = glXGetCurrentContext(); + struct glx_context * gc = __glXGetCurrentContext(); if (gc && apple_glx_context_uses_stereo(gc->driContext)) { GLenum newbuf[n + 2]; diff --git a/src/glx/apple/apple_xgl_api_viewport.c b/src/glx/apple/apple_xgl_api_viewport.c index e39ab15..e29eba8 100644 --- a/src/glx/apple/apple_xgl_api_viewport.c +++ b/src/glx/apple/apple_xgl_api_viewport.c @@ -36,7 +36,7 @@ extern struct apple_xgl_api __gl_api; void glViewport(GLint x, GLint y, GLsizei width, GLsizei height) { - GLXContext gc = __glXGetCurrentContext(); + struct glx_context *gc = __glXGetCurrentContext(); Display *dpy = glXGetCurrentDisplay(); if (gc && gc->driContext) diff --git a/src/glx/apple/glx_error.c b/src/glx/apple/glx_error.c index 282f7ae..b3a071c 100644 --- a/src/glx/apple/glx_error.c +++ b/src/glx/apple/glx_error.c @@ -40,7 +40,7 @@ __glXSendError(Display * dpy, int errorCode, unsigned long resourceID, unsigned long minorCode, bool coreX11error) { XExtDisplayInfo *info = __glXFindDisplay(dpy); - GLXContext gc = __glXGetCurrentContext(); + struct glx_context *gc = __glXGetCurrentContext(); xError error; LockDisplay(dpy); ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (7.10): apple: Rename __GLcontextModes to struct glx_config
Module: Mesa Branch: 7.10 Commit: 56930eccb29189068c15a395fc1cce7320bc5095 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=56930eccb29189068c15a395fc1cce7320bc5095 Author: Jeremy Huddleston Date: Sun Jun 5 17:02:33 2011 -0400 apple: Rename __GLcontextModes to struct glx_config Fixes regression introduced by: 6ddf66e9230ee862ac341c4767cf6b3b2dd2552b Signed-off-by: Jeremy Huddleston (cherry picked from commit bb621cb61e0c6d7fcd06df5a77c75efe5c76926d) --- src/glx/apple/apple_glx_pbuffer.c |2 +- src/glx/glx_pbuffer.c |2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/glx/apple/apple_glx_pbuffer.c b/src/glx/apple/apple_glx_pbuffer.c index d79125d..2817cda 100644 --- a/src/glx/apple/apple_glx_pbuffer.c +++ b/src/glx/apple/apple_glx_pbuffer.c @@ -128,7 +128,7 @@ apple_glx_pbuffer_create(Display * dpy, GLXFBConfig config, Window root; int screen; Pixmap xid; - struct glx_config *modes = (__GLcontextModes *) config; + struct glx_config *modes = (struct glx_config *) config; root = DefaultRootWindow(dpy); screen = DefaultScreen(dpy); diff --git a/src/glx/glx_pbuffer.c b/src/glx/glx_pbuffer.c index 5f91bc6..55f570a 100644 --- a/src/glx/glx_pbuffer.c +++ b/src/glx/glx_pbuffer.c @@ -843,7 +843,7 @@ glXCreatePixmap(Display * dpy, GLXFBConfig config, Pixmap pixmap, WARN_ONCE_GLX_1_3(dpy, __func__); #ifdef GLX_USE_APPLEGL - const struct glx_config *modes = (const __GLcontextModes *) config; + const struct glx_config *modes = (const struct glx_config *) config; if (apple_glx_pixmap_create(dpy, modes->screen, pixmap, modes)) return None; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (7.10): apple: Rename glcontextmodes.[ch] to glxconfig.[ch]
Module: Mesa Branch: 7.10 Commit: 6ad7721500d9d6c74cc9018386ccb7f4fbd42600 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6ad7721500d9d6c74cc9018386ccb7f4fbd42600 Author: Jeremy Huddleston Date: Sun Jun 5 16:56:01 2011 -0400 apple: Rename glcontextmodes.[ch] to glxconfig.[ch] Fixes regression introduced by: 65d98e25770487456eb3d7eb8ec3ec8272f170b1 Signed-off-by: Jeremy Huddleston (cherry picked from commit 4c9bab78a118953baf307e31cd53e731299f0151) --- src/glx/apple/Makefile|2 +- src/glx/apple/apple_glx_pbuffer.c |2 +- src/glx/apple/apple_glx_pixmap.c |2 +- src/glx/apple/apple_visual.c |2 +- src/glx/apple/glx_empty.c |2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/glx/apple/Makefile b/src/glx/apple/Makefile index fd47b3d..757e811 100644 --- a/src/glx/apple/Makefile +++ b/src/glx/apple/Makefile @@ -38,7 +38,7 @@ SOURCES = \ appledri.c \ ../clientattrib.c \ ../compsize.c \ - ../glcontextmodes.c \ + ../glxconfig.c \ glx_empty.c \ glx_error.c \ ../glx_pbuffer.c \ diff --git a/src/glx/apple/apple_glx_pbuffer.c b/src/glx/apple/apple_glx_pbuffer.c index a5ef59c..d79125d 100644 --- a/src/glx/apple/apple_glx_pbuffer.c +++ b/src/glx/apple/apple_glx_pbuffer.c @@ -44,7 +44,7 @@ #include #include #include "apple_glx.h" -#include "glcontextmodes.h" +#include "glxconfig.h" #include "apple_cgl.h" /* mesa defines in glew.h, Apple in glext.h. diff --git a/src/glx/apple/apple_glx_pixmap.c b/src/glx/apple/apple_glx_pixmap.c index fec05e0..4586707 100644 --- a/src/glx/apple/apple_glx_pixmap.c +++ b/src/glx/apple/apple_glx_pixmap.c @@ -40,7 +40,7 @@ #include "apple_visual.h" #include "apple_glx_drawable.h" #include "appledri.h" -#include "glcontextmodes.h" +#include "glxconfig.h" static bool pixmap_make_current(struct apple_glx_context *ac, struct apple_glx_drawable *d); diff --git a/src/glx/apple/apple_visual.c b/src/glx/apple/apple_visual.c index 7a9525e..29c6f16 100644 --- a/src/glx/apple/apple_visual.c +++ b/src/glx/apple/apple_visual.c @@ -47,7 +47,7 @@ #include "apple_cgl.h" #include "apple_visual.h" #include "apple_glx.h" -#include "glcontextmodes.h" +#include "glxconfig.h" enum { diff --git a/src/glx/apple/glx_empty.c b/src/glx/apple/glx_empty.c index 5967eca..1e9593c 100644 --- a/src/glx/apple/glx_empty.c +++ b/src/glx/apple/glx_empty.c @@ -1,6 +1,6 @@ #include "glxclient.h" #include "glxextensions.h" -#include "glcontextmodes.h" +#include "glxconfig.h" /* ** GLX_SGI_swap_control ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (7.10): apple: Update GL specs
Module: Mesa Branch: 7.10 Commit: 5e1199ff1209ba7c34482b968c43ef7d5dca2678 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=5e1199ff1209ba7c34482b968c43ef7d5dca2678 Author: Jeremy Huddleston Date: Sun Jun 5 17:14:04 2011 -0400 apple: Update GL specs Signed-off-by: Jeremy Huddleston (cherry picked from commit 8e89d0bea7df553a6c937aaa87b1a3c179f69599) --- src/glx/apple/specs/enum.spec | 711 ++- src/glx/apple/specs/enumext.spec| 507 +- src/glx/apple/specs/gl.spec | 3652 --- src/glx/apple/specs/gl.tm | 12 +- src/glx/apple/specs/glxenum.spec| 73 +- src/glx/apple/specs/glxenumext.spec | 56 +- src/glx/apple/specs/glxext.spec | 166 ++- 7 files changed, 4738 insertions(+), 439 deletions(-) Diff: http://cgit.freedesktop.org/mesa/mesa/diff/?id=5e1199ff1209ba7c34482b968c43ef7d5dca2678 ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): darwin: Define GALLIUM_DRIVERS_DIRS in darwin config
Module: Mesa Branch: master Commit: d563009cd1134557178c29d45b664e58bbed URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=d563009cd1134557178c29d45b664e58bbed Author: Jeremy Huddleston Date: Mon Jun 6 11:38:05 2011 -0400 darwin: Define GALLIUM_DRIVERS_DIRS in darwin config Signed-off-by: Jeremy Huddleston --- configs/darwin |2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/configs/darwin b/configs/darwin index 9906107..9c126ea 100644 --- a/configs/darwin +++ b/configs/darwin @@ -57,3 +57,5 @@ GLU_DIRS = sgi DRIVER_DIRS = osmesa #DRIVER_DIRS = dri DRI_DIRS = swrast +GALLIUM_DRIVERS_DIRS = softpipe trace rbug noop identity galahad failover +#GALLIUM_DRIVERS_DIRS += llvmpipe ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): apple: Finish build fixes for applegl_glx.c
Module: Mesa Branch: master Commit: 2ee5272e1671aff8c8d9e0c12bf37ed006717283 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=2ee5272e1671aff8c8d9e0c12bf37ed006717283 Author: Jeremy Huddleston Date: Mon Jun 6 11:27:19 2011 -0400 apple: Finish build fixes for applegl_glx.c libGL.dylib now *builds* on darwin. Signed-off-by: Jeremy Huddleston --- src/glx/applegl_glx.c |5 ++--- 1 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/glx/applegl_glx.c b/src/glx/applegl_glx.c index ff899df..9b8605f 100644 --- a/src/glx/applegl_glx.c +++ b/src/glx/applegl_glx.c @@ -99,7 +99,8 @@ applegl_create_context(struct glx_screen *psc, struct glx_context *gc; int errorcode; bool x11error; - Display *dpy; + Display *dpy = psc->dpy; + int screen = psc->scr; /* TODO: Integrate this with apple_glx_create_context and make * struct apple_glx_context inherit from struct glx_context. */ @@ -113,8 +114,6 @@ applegl_create_context(struct glx_screen *psc, return NULL; } - dpy = gc->psc->dpy; - gc->vtable = &applegl_context_vtable; gc->driContext = NULL; gc->do_destroy = False; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): apple: More fixes for compilation failures
Module: Mesa Branch: master Commit: 7c5f37c032231ad144a8a5c5a0b18f3e26c0aea7 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=7c5f37c032231ad144a8a5c5a0b18f3e26c0aea7 Author: Jeremy Huddleston Date: Mon Jun 6 11:15:32 2011 -0400 apple: More fixes for compilation failures Signed-off-by: Jeremy Huddleston --- src/glx/applegl_glx.c | 12 ++-- 1 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/glx/applegl_glx.c b/src/glx/applegl_glx.c index 660566f..ff899df 100644 --- a/src/glx/applegl_glx.c +++ b/src/glx/applegl_glx.c @@ -52,7 +52,7 @@ applegl_bind_context(struct glx_context *gc, struct glx_context *old, { Display *dpy = gc->psc->dpy; bool error = apple_glx_make_current_context(dpy, - (oldGC && oldGC != &dummyContext) ? oldGC->driContext : NULL + (old && old != &dummyContext) ? old->driContext : NULL, gc ? gc->driContext : NULL, draw); apple_glx_diagnostic("%s: error %s\n", __func__, error ? "YES" : "NO"); @@ -93,7 +93,7 @@ static const struct glx_context_vtable applegl_context_vtable = { struct glx_context * applegl_create_context(struct glx_screen *psc, - struct glx_config *mode, + struct glx_config *config, struct glx_context *shareList, int renderType) { struct glx_context *gc; @@ -108,7 +108,7 @@ applegl_create_context(struct glx_screen *psc, if (gc == NULL) return NULL; - if (!glx_context_init(gc, psc, mode)) { + if (!glx_context_init(gc, psc, config)) { Xfree(gc); return NULL; } @@ -120,7 +120,7 @@ applegl_create_context(struct glx_screen *psc, gc->do_destroy = False; /* TODO: darwin: Integrate with above to do indirect */ - if(apple_glx_create_context(&gc->driContext, dpy, screen, fbconfig, + if(apple_glx_create_context(&gc->driContext, dpy, screen, config, shareList ? shareList->driContext : NULL, &errorcode, &x11error)) { __glXSendError(dpy, errorcode, 0, X_GLXCreateContext, x11error); @@ -129,8 +129,8 @@ applegl_create_context(struct glx_screen *psc, } gc->currentContextTag = -1; - gc->mode = fbconfig; - gc->isDirect = 1; + gc->config = config; + gc->isDirect = GL_TRUE; gc->xid = 1; /* Just something not None, so we know when to destroy * it in MakeContextCurrent. */ ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Demos (master): cmake: Fix copy'n'paste typo in earlier commit.
Module: Demos Branch: master Commit: ca34c88302fc476b5e90a20b142532ffc58bc1b5 URL: http://cgit.freedesktop.org/mesa/demos/commit/?id=ca34c88302fc476b5e90a20b142532ffc58bc1b5 Author: José Fonseca Date: Mon Jun 6 15:40:55 2011 +0100 cmake: Fix copy'n'paste typo in earlier commit. --- CMakeLists.txt |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c1bc27f..c9cc2a8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,7 +24,7 @@ endif (UNIX) # from the standard OpenGL framework which provides support for GLUT and native # Mac OS X applications. if (X11_FOUND) - if (X11_FOUND) + if (APPLE) find_path (X11_GL_INCLUDE_PATH GL/glx.h ${X11_INC_SEARCH_PATH}) if (NOT X11_GL_INCLUDE_PATH) message (WARNING "Could not find GL/glx.h") ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Demos (master): cmake: Build X11 programs on MacOSX.
Module: Demos Branch: master Commit: df8fdd4a5053f5d8dbcdf9991f9ca21e64dece28 URL: http://cgit.freedesktop.org/mesa/demos/commit/?id=df8fdd4a5053f5d8dbcdf9991f9ca21e64dece28 Author: José Fonseca Date: Mon Jun 6 15:31:54 2011 +0100 cmake: Build X11 programs on MacOSX. On Mac OS X, GLX is provided as a separate OpenGL implementation, different from the standard OpenGL framework which provides support for GLUT and native Mac OS X applications. --- .gitignore | 27 +-- CMakeLists.txt | 30 ++ src/demos/CMakeLists.txt |4 ++-- src/fp/CMakeLists.txt|4 ++-- src/fpglsl/CMakeLists.txt|4 ++-- src/glsl/CMakeLists.txt |4 ++-- src/gs/CMakeLists.txt|4 ++-- src/objviewer/CMakeLists.txt |4 ++-- src/perf/CMakeLists.txt |4 ++-- src/redbook/CMakeLists.txt |4 ++-- src/samples/CMakeLists.txt | 37 - src/samples/oglinfo.c|2 +- src/slang/CMakeLists.txt |4 ++-- src/tests/CMakeLists.txt | 38 +- src/tests/getprocaddress.c |2 +- src/tests/jkrahntest.c |2 +- src/tests/sharedtex.c|2 +- src/tests/texobjshare.c |2 +- src/tools/trace/gltrace.py |2 +- src/trivial/CMakeLists.txt |4 ++-- src/util/CMakeLists.txt |2 +- src/vp/CMakeLists.txt|4 ++-- src/vpglsl/CMakeLists.txt|4 ++-- src/xdemos/CMakeLists.txt|9 - src/xdemos/corender.c|2 +- src/xdemos/glsync.c |2 +- src/xdemos/glthreads.c |2 +- src/xdemos/glxcontexts.c |2 +- src/xdemos/glxdemo.c |2 +- src/xdemos/glxgears.c|2 +- src/xdemos/glxgears_fbconfig.c |2 +- src/xdemos/glxgears_pixmap.c |2 +- src/xdemos/glxheads.c|2 +- src/xdemos/glxinfo.c |2 +- src/xdemos/glxpixmap.c |2 +- src/xdemos/glxsnoop.c|2 +- src/xdemos/glxswapcontrol.c |2 +- src/xdemos/manywin.c |2 +- src/xdemos/msctest.c |2 +- src/xdemos/multictx.c|2 +- src/xdemos/omlsync.c |2 +- src/xdemos/opencloseopen.c |2 +- src/xdemos/overlay.c |2 +- src/xdemos/sharedtex.c |2 +- src/xdemos/sharedtex_mt.c|2 +- src/xdemos/texture_from_pixmap.c |2 +- src/xdemos/wincopy.c |2 +- src/xdemos/xfont.c |2 +- src/xdemos/xrotfontdemo.c|2 +- 49 files changed, 148 insertions(+), 105 deletions(-) diff --git a/.gitignore b/.gitignore index 8fd26e4..67fced9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,9 @@ .*.sw? *.a +*.bz2 +*.dmg +*.la +*.lo *.o *.obj *.os @@ -7,30 +11,35 @@ *.pdb *.pyc *.pyo -*.la -*.lo *.so +*.zip *~ .deps .libs -depend -depend.bak -cmake_install.cmake CMakeCache.txt CMakeFiles -compile -configure -autom4te.cache +CPackConfig.cmake +CPackSourceConfig.cmake +Makefile +Makefile.in +_CPack_Packages/ aclocal.m4 +autom4te.cache build +cmake_install.cmake +compile config.guess config.log config.status config.sub +configure configure.lineno cscope* depcomp +depend +depend.bak install-sh +install_manifest.txt libtool libtool.m4 ltmain.sh @@ -39,5 +48,3 @@ ltsugar.m4 ltversion.m4 lt~obsolete.m4 missing -Makefile -Makefile.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 4404bc6..240018d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,6 +20,36 @@ if (UNIX) link_libraries(m) endif (UNIX) +# On Mac OS X, GLX is provided as a separate OpenGL implementation, different +# from the standard OpenGL framework which provides support for GLUT and native +# Mac OS X applications. +if (X11_FOUND) + if (X11_FOUND) + find_path (X11_GL_INCLUDE_PATH GL/glx.h ${X11_INC_SEARCH_PATH}) + if (NOT X11_GL_INCLUDE_PATH) + message (WARNING "Could not find GL/glx.h") + set (X11_FOUND FALSE) + endif (NOT X11_GL_INCLUDE_PATH) + set (X11_INCLUDE_DIR ${X11_INCLUDE_DIR} ${X11_GL_INCLUDE_PATH}) + + find_library (X11_GL_LIB GL ${X11_LIB_SEARCH_PATH}) + if (NOT X11_GL_LIB) + message (WARNING "Could not find libGL.dylib") + set (X11_FOUND FALSE) + endif (NOT X11_GL_LIB) + + find_library (X11_GLU_LIB GLU ${X11_LIB_SEARCH_PATH}) + if (NOT X11_GLU_LIB) + message (WARNING "Could not find libGLU.dylib") + set (X11_FOUND FALSE) + endif (NOT X11_GLU_LIB) + else () + set (X11_INCLUDE_DIR ${X11_INCLUDE_DIR}
Demos (master): cmake: Basic packaging support.
Module: Demos Branch: master Commit: 8dae237d2c85421b28dc5d86e7e36ceb1ca335cc URL: http://cgit.freedesktop.org/mesa/demos/commit/?id=8dae237d2c85421b28dc5d86e7e36ceb1ca335cc Author: José Fonseca Date: Mon Jun 6 15:32:58 2011 +0100 cmake: Basic packaging support. --- CMakeLists.txt | 19 +++ 1 files changed, 19 insertions(+), 0 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 240018d..c1bc27f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -89,3 +89,22 @@ endif (MSVC) add_definitions(-DDEMOS_DATA_DIR=\"../data/\") add_subdirectory (src) + + +install (FILES index.html DESTINATION doc) + +set (CPACK_PACKAGE_NAME "mesa-demos") +set (CPACK_PACKAGE_VERSION_MAJOR "8") +set (CPACK_PACKAGE_VERSION_MINOR "0") +set (CPACK_PACKAGE_VERSION_PATCH "1") + +if (WIN32) +set (CPACK_GENERATOR "ZIP") +elseif (APPLE) +set (CPACK_GENERATOR "DragNDrop") +set (CPACK_DMG_FORMAT "UDBZ") +else () +set (CPACK_GENERATOR "TBZ2") +endif () + +include(CPack) ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): softpipe: Anisotropic filtering extension.
Module: Mesa Branch: master Commit: f4537f99cc83cb8133f66dc97c613e95dc0fe162 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=f4537f99cc83cb8133f66dc97c613e95dc0fe162 Author: Andreas Faenger Date: Mon Jun 6 07:13:16 2011 + softpipe: Anisotropic filtering extension. Reference implementation which produces high quality renderings. Based on Higher Quality Elliptical Weighted Avarage Filter (EWA). Signed-off-by: Brian Paul --- src/gallium/drivers/softpipe/sp_screen.c |4 +- src/gallium/drivers/softpipe/sp_tex_sample.c | 338 +- 2 files changed, 336 insertions(+), 6 deletions(-) diff --git a/src/gallium/drivers/softpipe/sp_screen.c b/src/gallium/drivers/softpipe/sp_screen.c index 48aabc1..30f53a9 100644 --- a/src/gallium/drivers/softpipe/sp_screen.c +++ b/src/gallium/drivers/softpipe/sp_screen.c @@ -81,7 +81,7 @@ softpipe_get_param(struct pipe_screen *screen, enum pipe_cap param) case PIPE_CAP_SM3: return 1; case PIPE_CAP_ANISOTROPIC_FILTER: - return 0; + return 1; case PIPE_CAP_POINT_SPRITE: return 1; case PIPE_CAP_MAX_RENDER_TARGETS: @@ -161,7 +161,7 @@ softpipe_get_paramf(struct pipe_screen *screen, enum pipe_cap param) case PIPE_CAP_MAX_POINT_WIDTH_AA: return 255.0; /* arbitrary */ case PIPE_CAP_MAX_TEXTURE_ANISOTROPY: - return 16.0; /* not actually signficant at this time */ + return 16.0; case PIPE_CAP_MAX_TEXTURE_LOD_BIAS: return 16.0; /* arbitrary */ default: diff --git a/src/gallium/drivers/softpipe/sp_tex_sample.c b/src/gallium/drivers/softpipe/sp_tex_sample.c index 1446aee..90766f4 100644 --- a/src/gallium/drivers/softpipe/sp_tex_sample.c +++ b/src/gallium/drivers/softpipe/sp_tex_sample.c @@ -1709,6 +1709,317 @@ mip_filter_none(struct tgsi_sampler *tgsi_sampler, } +/* For anisotropic filtering */ +#define WEIGHT_LUT_SIZE 1024 + +static float *weightLut = NULL; + +/** + * Creates the look-up table used to speed-up EWA sampling + */ +static void +create_filter_table(void) +{ + unsigned i; + if (!weightLut) { + weightLut = (float *) malloc(WEIGHT_LUT_SIZE * sizeof(float)); + + for (i = 0; i < WEIGHT_LUT_SIZE; ++i) { + float alpha = 2; + float r2 = (float) i / (float) (WEIGHT_LUT_SIZE - 1); + float weight = (float) exp(-alpha * r2); + weightLut[i] = weight; + } + } +} + + +/** + * Elliptical weighted average (EWA) filter for producing high quality + * anisotropic filtered results. + * Based on the Higher Quality Elliptical Weighted Avarage Filter + * published by Paul S. Heckbert in his Master's Thesis + * "Fundamentals of Texture Mapping and Image Warping" (1989) + */ +static void +img_filter_2d_ewa(struct tgsi_sampler *tgsi_sampler, + const float s[QUAD_SIZE], + const float t[QUAD_SIZE], + const float p[QUAD_SIZE], + const float c0[QUAD_SIZE], + enum tgsi_sampler_control control, + const float dudx, const float dvdx, + const float dudy, const float dvdy, + float rgba[NUM_CHANNELS][QUAD_SIZE]) +{ + const struct sp_sampler_variant *samp = sp_sampler_variant(tgsi_sampler); + const struct pipe_resource *texture = samp->view->texture; + + unsigned level0 = samp->level > 0 ? samp->level : 0; + float scaling = 1.0 / (1 << level0); + int width = u_minify(texture->width0, level0); + int height = u_minify(texture->height0, level0); + + float ux = dudx * scaling; + float vx = dvdx * scaling; + float uy = dudy * scaling; + float vy = dvdy * scaling; + + /* compute ellipse coefficients to bound the region: +* A*x*x + B*x*y + C*y*y = F. +*/ + float A = vx*vx+vy*vy+1; + float B = -2*(ux*vx+uy*vy); + float C = ux*ux+uy*uy+1; + float F = A*C-B*B/4.0; + + /* check if it is an ellipse */ + /* ASSERT(F > 0.0); */ + + /* Compute the ellipse's (u,v) bounding box in texture space */ + float d = -B*B+4.0*C*A; + float box_u = 2.0 / d * sqrt(d*C*F); /* box_u -> half of bbox with */ + float box_v = 2.0 / d * sqrt(A*d*F); /* box_v -> half of bbox height */ + + float rgba_temp[NUM_CHANNELS][QUAD_SIZE]; + float s_buffer[QUAD_SIZE]; + float t_buffer[QUAD_SIZE]; + float weight_buffer[QUAD_SIZE]; + unsigned buffer_next; + int j; + float den;// = 0.0F; + float ddq; + float U;// = u0 - tex_u; + int v; + + /* Scale ellipse formula to directly index the Filter Lookup Table. +* i.e. scale so that F = WEIGHT_LUT_SIZE-1 +*/ + double formScale = (double) (WEIGHT_LUT_SIZE - 1) / F; + A *= formScale; + B *= formScale; + C *= formScale; + /* F *= formScale; */ /* no need to scale F as we don't use it below here */ + + /* For each quad, the du and dx values are the same and so the ellipse is +* also the same. Note that texel/image access can only be performed using +* a quad, i.e. it is not possible to get the pixe
Mesa (master): st/mesa: fix renderbuffer internal format for accum buffer
Module: Mesa Branch: master Commit: b438005d961bc7fcc8cbedc34b8b15dfd09365b1 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=b438005d961bc7fcc8cbedc34b8b15dfd09365b1 Author: Brian Paul Date: Mon Jun 6 08:06:34 2011 -0600 st/mesa: fix renderbuffer internal format for accum buffer Fixes an accum buffer regression since switching to the table-based format selection code. --- src/mesa/state_tracker/st_cb_fbo.c |3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/src/mesa/state_tracker/st_cb_fbo.c b/src/mesa/state_tracker/st_cb_fbo.c index 64424f7..5b9e203 100644 --- a/src/mesa/state_tracker/st_cb_fbo.c +++ b/src/mesa/state_tracker/st_cb_fbo.c @@ -270,7 +270,8 @@ st_new_renderbuffer_fb(enum pipe_format format, int samples, boolean sw) strb->Base.InternalFormat = GL_STENCIL_INDEX8_EXT; break; case PIPE_FORMAT_R16G16B16A16_SNORM: - strb->Base.InternalFormat = GL_RGBA16; + /* accum buffer */ + strb->Base.InternalFormat = GL_RGBA16_SNORM; break; case PIPE_FORMAT_R8_UNORM: strb->Base.InternalFormat = GL_R8; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): util: add \n to debug_checkpoint_full
Module: Mesa Branch: master Commit: 155cf15ce216c3b67c13da1041401cbcc1c43b1e URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=155cf15ce216c3b67c13da1041401cbcc1c43b1e Author: Marcin Slusarz Date: Mon May 16 21:53:06 2011 +0200 util: add \n to debug_checkpoint_full Signed-off-by: José Fonseca --- src/gallium/auxiliary/util/u_debug.h |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/src/gallium/auxiliary/util/u_debug.h b/src/gallium/auxiliary/util/u_debug.h index c47c13c..b5ea405 100644 --- a/src/gallium/auxiliary/util/u_debug.h +++ b/src/gallium/auxiliary/util/u_debug.h @@ -192,7 +192,7 @@ void _debug_assert_fail(const char *expr, */ #ifdef DEBUG #define debug_checkpoint_full() \ - _debug_printf("%s:%u:%s", __FILE__, __LINE__, __FUNCTION__) + _debug_printf("%s:%u:%s\n", __FILE__, __LINE__, __FUNCTION__) #else #define debug_checkpoint_full() \ ((void)0) ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): nv50: fix nv50_sampler_state_delete array overflow
Module: Mesa Branch: master Commit: fb40f1f532b5ea9fb9069f81af9e80835c18b3de URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=fb40f1f532b5ea9fb9069f81af9e80835c18b3de Author: Marcin Slusarz Date: Sun Jun 5 21:00:28 2011 +0200 nv50: fix nv50_sampler_state_delete array overflow num_samplers is array of 3 elements, not 5 --- src/gallium/drivers/nv50/nv50_state.c |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/src/gallium/drivers/nv50/nv50_state.c b/src/gallium/drivers/nv50/nv50_state.c index 8d75dd0..fb125f3 100644 --- a/src/gallium/drivers/nv50/nv50_state.c +++ b/src/gallium/drivers/nv50/nv50_state.c @@ -508,7 +508,7 @@ nv50_sampler_state_delete(struct pipe_context *pipe, void *hwcso) { unsigned s, i; - for (s = 0; s < 5; ++s) + for (s = 0; s < 3; ++s) for (i = 0; i < nv50_context(pipe)->num_samplers[s]; ++i) if (nv50_context(pipe)->samplers[s][i] == hwcso) nv50_context(pipe)->samplers[s][i] = NULL; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit