diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_context.c | 39 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/intel_fbo.c | 2 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/intel_screen.c | 34 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/intel_screen.h | 9 |
4 files changed, 22 insertions, 62 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c index 840a384ba21..7319114f054 100644 --- a/src/mesa/drivers/dri/i965/brw_context.c +++ b/src/mesa/drivers/dri/i965/brw_context.c @@ -90,14 +90,14 @@ static void brwInitDriverFunctions(struct intel_screen *screen, brwInitFragProgFuncs( functions ); brw_init_common_queryobj_functions(functions); - if (screen->gen >= 6) + if (screen->devinfo->gen >= 6) gen6_init_queryobj_functions(functions); else gen4_init_queryobj_functions(functions); functions->QuerySamplesForFormat = brw_query_samples_for_format; - if (screen->gen >= 7) { + if (screen->devinfo->gen >= 7) { functions->BeginTransformFeedback = gen7_begin_transform_feedback; functions->EndTransformFeedback = gen7_end_transform_feedback; } else { @@ -105,7 +105,7 @@ static void brwInitDriverFunctions(struct intel_screen *screen, functions->EndTransformFeedback = brw_end_transform_feedback; } - if (screen->gen >= 6) + if (screen->devinfo->gen >= 6) functions->GetSamplePosition = gen6_get_sample_position; } @@ -342,6 +342,7 @@ brwCreateContext(gl_api api, __DRIscreen *sPriv = driContextPriv->driScreenPriv; struct gl_context *shareCtx = (struct gl_context *) sharedContextPrivate; struct intel_screen *screen = sPriv->driverPrivate; + const struct brw_device_info *devinfo = screen->devinfo; struct dd_function_table functions; struct gl_config visual; @@ -356,31 +357,17 @@ brwCreateContext(gl_api api, brw->driContext = driContextPriv; brw->intelScreen = screen; brw->bufmgr = screen->bufmgr; - brw->gen = screen->gen; - - const int devID = screen->deviceID; - if (IS_SNB_GT1(devID) || IS_IVB_GT1(devID) || IS_HSW_GT1(devID)) - brw->gt = 1; - else if (IS_SNB_GT2(devID) || IS_IVB_GT2(devID) || IS_HSW_GT2(devID)) - brw->gt = 2; - else if (IS_HSW_GT3(devID)) - brw->gt = 3; - else - brw->gt = 0; - - if (IS_HASWELL(devID)) { - brw->is_haswell = true; - } else if (IS_BAYTRAIL(devID)) { - brw->is_baytrail = true; - brw->gt = 1; - } else if (IS_G4X(devID)) { - brw->is_g4x = true; - } - brw->has_separate_stencil = screen->hw_has_separate_stencil; + brw->gen = devinfo->gen; + brw->gt = devinfo->gt; + brw->is_g4x = devinfo->is_g4x; + brw->is_baytrail = devinfo->is_baytrail; + brw->is_haswell = devinfo->is_haswell; + brw->has_llc = devinfo->has_llc; + brw->has_hiz = devinfo->has_hiz_and_separate_stencil; + brw->has_separate_stencil = devinfo->has_hiz_and_separate_stencil; + brw->must_use_separate_stencil = screen->hw_must_use_separate_stencil; - brw->has_hiz = brw->gen >= 6; - brw->has_llc = screen->hw_has_llc; brw->has_swizzling = screen->hw_has_swizzling; brwInitVtbl( brw ); diff --git a/src/mesa/drivers/dri/i965/intel_fbo.c b/src/mesa/drivers/dri/i965/intel_fbo.c index 1692325903b..ddecb2b9800 100644 --- a/src/mesa/drivers/dri/i965/intel_fbo.c +++ b/src/mesa/drivers/dri/i965/intel_fbo.c @@ -159,7 +159,7 @@ intel_unmap_renderbuffer(struct gl_context *ctx, unsigned intel_quantize_num_samples(struct intel_screen *intel, unsigned num_samples) { - switch (intel->gen) { + switch (intel->devinfo->gen) { case 6: /* Gen6 supports only 4x multisampling. */ if (num_samples > 0) diff --git a/src/mesa/drivers/dri/i965/intel_screen.c b/src/mesa/drivers/dri/i965/intel_screen.c index 1cb297e53f2..1b5d8bd389d 100644 --- a/src/mesa/drivers/dri/i965/intel_screen.c +++ b/src/mesa/drivers/dri/i965/intel_screen.c @@ -934,7 +934,7 @@ intelCreateBuffer(__DRIscreen * driScrnPriv, if (mesaVis->depthBits == 24) { assert(mesaVis->stencilBits == 8); - if (screen->hw_has_separate_stencil) { + if (screen->devinfo->has_hiz_and_separate_stencil) { rb = intel_create_private_renderbuffer(MESA_FORMAT_X8_Z24, num_samples); _mesa_add_renderbuffer(fb, BUFFER_DEPTH, &rb->Base.Base); @@ -1049,6 +1049,7 @@ intel_screen_make_configs(__DRIscreen *dri_screen) static const uint8_t multisample_samples[2] = {4, 8}; struct intel_screen *screen = dri_screen->driverPrivate; + const struct brw_device_info *devinfo = screen->devinfo; uint8_t depth_bits[4], stencil_bits[4]; __DRIconfig **configs = NULL; @@ -1067,7 +1068,7 @@ intel_screen_make_configs(__DRIscreen *dri_screen) if (formats[i] == MESA_FORMAT_RGB565) { depth_bits[1] = 16; stencil_bits[1] = 0; - if (screen->gen >= 6) { + if (devinfo->gen >= 6) { depth_bits[2] = 24; stencil_bits[2] = 8; num_depth_stencil_bits = 3; @@ -1123,7 +1124,7 @@ intel_screen_make_configs(__DRIscreen *dri_screen) * them. */ for (int i = 0; i < ARRAY_SIZE(formats); i++) { - if (screen->gen < 6) + if (devinfo->gen < 6) break; __DRIconfig **new_configs; @@ -1141,9 +1142,9 @@ intel_screen_make_configs(__DRIscreen *dri_screen) stencil_bits[1] = 8; } - if (screen->gen >= 7) + if (devinfo->gen >= 7) num_msaa_modes = 2; - else if (screen->gen == 6) + else if (devinfo->gen == 6) num_msaa_modes = 1; new_configs = driCreateConfigs(formats[i], @@ -1171,7 +1172,7 @@ set_max_gl_versions(struct intel_screen *screen) { __DRIscreen *psp = screen->driScrnPriv; - switch (screen->gen) { + switch (screen->devinfo->gen) { case 7: psp->max_gl_core_version = 32; psp->max_gl_compat_version = 30; @@ -1234,26 +1235,7 @@ __DRIconfig **intelInitScreen2(__DRIscreen *psp) intelScreen->deviceID = drm_intel_bufmgr_gem_get_devid(intelScreen->bufmgr); intelScreen->devinfo = brw_get_device_info(intelScreen->deviceID); - if (IS_GEN7(intelScreen->deviceID)) { - intelScreen->gen = 7; - } else if (IS_GEN6(intelScreen->deviceID)) { - intelScreen->gen = 6; - } else if (IS_GEN5(intelScreen->deviceID)) { - intelScreen->gen = 5; - } else { - intelScreen->gen = 4; - } - - intelScreen->hw_has_separate_stencil = intelScreen->gen >= 6; - intelScreen->hw_must_use_separate_stencil = intelScreen->gen >= 7; - - int has_llc = 0; - bool success = intel_get_param(intelScreen->driScrnPriv, I915_PARAM_HAS_LLC, - &has_llc); - if (success && has_llc) - intelScreen->hw_has_llc = true; - else if (!success && intelScreen->gen >= 6) - intelScreen->hw_has_llc = true; + intelScreen->hw_must_use_separate_stencil = intelScreen->devinfo->gen >= 7; intelScreen->hw_has_swizzling = intel_detect_swizzling(intelScreen); diff --git a/src/mesa/drivers/dri/i965/intel_screen.h b/src/mesa/drivers/dri/i965/intel_screen.h index ef69e95efe6..0b75c6e6e71 100644 --- a/src/mesa/drivers/dri/i965/intel_screen.h +++ b/src/mesa/drivers/dri/i965/intel_screen.h @@ -42,21 +42,12 @@ struct intel_screen int deviceID; const struct brw_device_info *devinfo; - int gen; - __DRIscreen *driScrnPriv; bool no_hw; - /* - * The hardware hiz and separate stencil fields are needed in intel_screen, - * rather than solely in brw_context, because glXCreatePbuffer and - * glXCreatePixmap are not passed a GLXContext. - */ - bool hw_has_separate_stencil; bool hw_must_use_separate_stencil; - bool hw_has_llc; bool hw_has_swizzling; dri_bufmgr *bufmgr; |